Почему люди используют изображения JPG?

17

Я вижу изображения JPG везде. Но почему?

Файлы PNG имеют непрозрачность, а файлы JPG - нет. Я попытался экспортировать некоторые изображения в PNG и JPG, чтобы сравнить их размер, и они либо совпадают, либо PNG меньше (конечно, в зависимости от изображения).

введите описание изображения здесь

Это изображение 512x512 JPG с надписью "JPG"

введите описание изображения здесь

И это изображение PNG 512x512 с надписью «PNG».

JPG был 31,7 КБ, а PNG был 25,9 КБ

Так что же дает?

JediBurrell
источник
3
Вам также следует знать, что .png без потерь, а .jpg - нет. Так что .png больше подходит для исходных изображений, а .jpg больше подходит для публикации.
Никто
1
@ Никто не может быть с потерями или без потерь. В зависимости от того, как вы его экспортируете.
DA01
8
К вашему сведению, вы редко использовали бы JPG для штриховой графики, как примеры, которые вы используете здесь. Поэтому, основываясь исключительно на этих примерах, вы не будете использовать JPG. Если бы это были фотографии, вы поймете, что получите совершенно другие результаты.
DA01
7
Я серьезно не могу поверить, что этот вопрос выжил более 10 секунд.
штатском
2
@ DA01 PNG никогда не бывает с потерями, но вы можете потерять изображение, прежде чем экспортировать его в PNG, чтобы уменьшить его. Спецификация PNG ничего об этом не знает.
Никто

Ответы:

35

Потому что они намного лучше сжимают изображения, которые имеют много цветов и неправильных форм, например, фотографии.

Вы пробовали то же самое, что и вы, но затем с фотографией? .Png, скорее всего, будет заметно больше, чем любой .jpg, независимо от коэффициента сжатия .jpg.

Пример:

PNG фото
.png картинка, 110k

JPEG в 100 качестве
.jpg в 100% качестве, 63k

JPEG в 30 качестве
.jpg с качеством 30%, жалкие 9k

Если вы посмотрите внимательно, вы увидите некоторые артефакты с качеством 30% .jpg, но это в основном потому, что жесткий край лампочки на гладком зеленом фоне не слишком хорошо поддается алгоритму сжатия. Вы можете получить обычное изображение, уменьшенное до 10 или 5%, без потери, которую вы сразу заметите.

Винсент
источник
3
FWIW: после оптимизации PNG он имеет 34 КБ без каких-либо видимых потерь.
Марио
Вау, я никогда этого не знал. Я попытался преобразовать фотографию, которую я сделал в PNG, и она пошла от 550k до 2933k. Вы знаете, что делает это дело?
JediBurrell,
10
@JediBurrell PNG-сжатие всегда без потерь (AFAIK), в то время как сжатие JPG в конечном итоге отбрасывает информацию об изображении. В вашем случае уже сжатое JPG, хотя красивое изображение будет содержать края вокруг каждого сегмента (сжатые маленькие квадраты, составляющие изображение JPG), и PNG поднимает эти артефакты так, чтобы они не терялись. Следовательно, ваш PNG намного больше, чем ваш оригинальный JPG. Повторное сжатие JPG с использованием JPG сделает это во много раз хуже - эффект называется «метаблокировка».
Джей Верслуис
2
@JediBurrell Если вы заинтересованы в технических и математических деталях, вы можете посмотреть это видео от Computerphile.
Пол Манта
2
«Гладкий зеленый фон не слишком хорошо подходит для алгоритма сжатия»: напротив, градиенты очень хорошо представлены в формате JPEG, а жесткие края - нет, создавая артефакты поблизости. Для любопытных читайте о преобразовании Фурье квадратного сигнала.
Ллоки
13

JPEG пользуется поддержкой фотоиндустрии и предшествует PNG примерно на полдюжины лет, в то время как PNG был разработан как замена для GIF, который довольно рьяно защищался CompuServe. К людям предъявляли иск за использование GIF-файлов на их веб-сайтах, например, просто потому, что они не использовали программу, лицензированную CompuServe, для создания этих изображений.

С самого начала JPEG был разработан для того, чтобы восстановить пространство за счет уменьшения размера файлов за счет идеального качества пикселей. Даже установка Q на 100 вызовет незначительные, в основном невидимые артефакты - повреждение наносится, и каждый дополнительный раз, когда файл модифицируется и сохраняется, будет происходить дальнейшее повреждение. Однако, если вы не сделаете так много раз, вы, вероятно, никогда не заметите эффект, если не будете искать его.

PNG, с другой стороны, совершенно без потерь. Каждый пиксель точно воспроизводится каждый раз, независимо от того, сколько раз файл был изменен и сохранен. Однако есть предел того, насколько хорошо вы можете сжимать данные без потерь, хотя PNG использует несколько приемов, чтобы упаковать как можно больше информации в как можно меньше байтов данных. Высокое качество JPEG, вероятно, будет примерно такого же размера, как PNG, без оптимизации или даже больше. Поскольку PNG начинает оптимизировать, скажем, с помощью фильтров или настройки размеров окна, файл становится меньше без потерь, в то время как JPEG должен начать отбрасывать визуальную информацию, чтобы не отставать.

Итак, почему используется JPEG? В конце концов, это, как правило, хуже с точки зрения точности и места для хранения. Основная причина, конечно же, заключается в том, что это отраслевой стандарт и очень широкую поддержку. Практически каждая камера в мире использует либо RAW (буквально, необработанные данные), либо JPEG. В эти камеры встроены аппаратные процессоры данных для максимально быстрого сжатия данных JPEG и т. Д.

Вы обнаружите, что это та же самая причина, почему GIF все еще везде. Большая часть программного обеспечения поддерживает GIF, в то время как PNG пользуется меньшей поддержкой в ​​старых программах (например, в старых версиях Internet Explorer для отображения файлов PNG требовался плагин). Несмотря на то, что он поддерживает паршивые цвета, он поддерживает анимацию, чего не делает PNG (существует связанный формат файлов, APNG, который никогда не отличался от PNG). GIF по-прежнему остается лидером среди анимированных изображений, поскольку это единственный формат файлов, который может сделать это с широкой поддержкой.

Стоимость перехода с JPEG на PNG будет слишком высокой с точки зрения аппаратного обеспечения. Камерам потребуются новые процессоры, созданные для поддержки быстрого сжатия PNG, например, потому что они жестко запрограммированы для использования JPEG прямо сейчас. Ваши старые камеры будут бесполезны, потому что вам придется покупать новую со встроенным чипом PNG. Это также означает, что вам придется убедить производителя идти вразрез с отраслевыми стандартами и начать производство таких устройств, а это значит, что для его обоснования должно быть достаточно спроса, и такие камеры изначально будут дороже, чем их основанные на JPEG двойники. Очень трудно изменить индустрию.

phyrfox
источник
PNG потенциально без потерь. Сохраняющее программное обеспечение может решить потерять данные для лучшего сжимаемого формата. Вавилетская природа jpeg делает невозможным без потерь.
Joojaa
@joojaa Можете ли вы подтвердить утверждение, что сжатие PNG «может привести к потере сложных данных»?
CJ Деннис
@joojaa JPEG использует сжатие DCT, а не вейвлет. Возможно, вы думаете о JPEG 2000.
bcrist
7
Насколько я понимаю, уменьшение цвета происходит до того, как изображение передается в кодек PNG. Тот факт, что формат способен хранить и без того потерянные данные, не делает их потерянными. Изменение 32-битного RGB с альфа-изображением на 1-битное черно-белое изображение приведет к потере большого количества данных, но это не PNG. Цвет уменьшение глубины является преобразование с потерей данных, а не с потерями сжатия .
CJ Деннис
2
Моя ошибка DCT это. Я хочу сказать, что в то время как PNG без потерь не все PNG оптимизаторы! Таким образом, не зная, что вы использовали, вы не знаете, был ли процесс с потерями или нет. Так что вопрос о безответности не так прост, как кажется. Точно так же, как изменения глубины цвета происходят перед сохранением, оптимизаторы PNG могут изменить изображения другими способами перед сохранением, для уменьшения занимаемой площади. @JCDennis Эти дробилки существуют, просто посмотрите их руководства.
Джуджаа
7

Что-то не упомянутое очень подробно - это способ работы этих алгоритмов сжатия. JPEG нацелен непосредственно на фотографии, где незначительные изменения в цвете пикселя не замечены. PNG больше предназначен для сфабрикованных изображений, которые содержат большие области одного цвета, где сжатие используется в полной мере, как в вашем примере с огромной полностью белой фотографией с простым черным шрифтом. Если вы сделаете одно и то же фото и поместите белый фон, чтобы он постепенно исчезал с белого на серый, равномерно по всей стороне изображения, размер png резко увеличился бы, и jpg, вероятно, мало изменился бы. Я сделал несколько кодов около 10 лет назад напрямую с обоими этими форматами, чтобы распаковать эти типы файлов в bmps. JPEG очень сложный и сложный. PNG очень прост и действительно эффективен только на определенных изображениях, где цвет не меняется в горизонтальных линиях

Райан
источник
1
Вы действительно пробовали это? PNG - это не просто кодирование длин серий, а гораздо более сложный, чем вы предполагаете. Он использует адаптивный алгоритм и эффективно сжимает как сплошные области, так и повторяющиеся шаблоны.
z7sg Ѫ