При определенных обстоятельствах изображения JPEG будут больше, чем изображения PNG.
Например, в случаях, когда очень простое изображение, PNG может в итоге сжать изображение лучше и обеспечить лучшее качество изображения.
Вот пример с некоторым кодом Java:
public static void main(String[] args)
{
BufferedImage img = new BufferedImage(
256,
256,
BufferedImage.TYPE_INT_RGB
);
Graphics g = img.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, 256, 256);
g.setColor(Color.black);
g.drawLine(0, 0, 255, 255);
g.drawLine(255, 0, 0, 255);
try
{
ImageIO.write(img, "jpg", new File("output.jpg"));
ImageIO.write(img, "png", new File("output.png"));
}
catch (IOException e) {} // Don't usually ignore exceptions!
g.dispose();
}
Приведенный выше код создает изображение с размерами 256 x 256 пикселей и рисует две пересекающиеся диагональные линии в виде буквы "X".
Изображение 256 x 256 использовалось для сохранения размера изображения, кратного 8, так как сжатие JPEG выполняет 2D DCT-преобразование для 8 × 8-пиксельных участков изображения, Сохраняя размер изображения и расположение линии для выравнивания в области 8 x 8 пикселей, это уменьшит количество артефактов сжатия и улучшит качество изображения.
(Выбор 256 x 256 был эмпирическим - я сначала использовал 100 x 100 и заметил, что изображение JPEG было ужасным, поэтому я попробовал 64 x 64, и оно выглядело лучше, поэтому я увеличил его для имитации более реалистичного изображения размер.)
После отрисовки изображения программа генерирует файл JPEG и файл PNG. (Библиотека Java ImageIO использует степень сжатия по умолчанию 0.75f
для качества сжатия JPEG.)
Результаты:
output.png : 1,308 bytes
output.jpg : 3,049 bytes
Взглянув на само изображение, у JPEG есть небольшие артефакты, но это было не очень заметно, пока я не увеличил изображение с помощью редактора изображений. Конечно, изображение в формате PNG без потерь, поэтому это было точное представление оригинала.
Чтобы сделать вывод, действительно ли изображение меньше с использованием PNG или JPEG, зависит от источника - есть случаи, когда JPEG может быть больше, чем PNG, и, тем не менее, PNG может иметь лучшее качество. Конечно, на практике обычно PNG для данного изображения будет больше, чем JPEG.