Каковы различные варианты использования PNG против GIF против JPEG против SVG? - PullRequest
558 голосов
/ 25 февраля 2010

Когда следует использовать определенные типы файлов изображений при создании веб-сайтов или интерфейсов и т. Д.?

Каковы их сильные и слабые стороны?

Я знаю, что PNG & GIF без потерь, а JPEG с потерями.
Но в чем главное отличие PNG и GIF?
Почему я должен предпочесть одно другому? Что такое SVG и когда мне его использовать?

Если вам не важен каждый пиксель, следует ли вам всегда использовать JPEG, так как он самый светлый?

Ответы [ 12 ]

1363 голосов
/ 13 октября 2011

Вы должны знать о нескольких ключевых факторах ...

Во-первых, существует два типа сжатия: Lossless и Lossy .

  • Без потерь означает, что изображение сделано меньше, но без ущерба для качества.
  • Потеря означает, что изображение становится (даже) меньше, но в ущерб качеству. Если вы сохраняете изображение в формате с потерями снова и снова, качество изображения будет становиться все хуже и хуже.

Существуют также различные глубины цвета (палитры): Индексированный цвет и Прямой цвет .

  • Индексированный означает, что изображение может хранить только ограниченное количество цветов (обычно 256), контролируемых автором, в так называемой Цветовой карте
  • Прямой означает, что вы можете хранить множество тысяч цветов, которые не были выбраны автором напрямую

BMP - без потерь / индексированный и прямой

Это старый формат. Это без потерь (никакие данные изображения не теряются при сохранении), но также практически отсутствует сжатие, что означает сохранение, поскольку BMP приводит к ОЧЕНЬ большим размерам файлов. Он может иметь палитры Indexed и Direct, но это небольшое утешение. Размеры файлов настолько неоправданно велики, что никто никогда не использует этот формат.

Хорошо для: Ничего особенного. У BMP нет ничего превосходного или лучше других форматов.

BMP vs GIF


GIF - без потерь / только индексированный

GIF использует сжатие без потерь, что означает, что вы можете сохранять изображение снова и снова и никогда не потерять какие-либо данные. Размеры файлов намного меньше, чем BMP, потому что на самом деле используется хорошее сжатие, но оно может хранить только индексированную палитру. Это означает, что для большинства случаев использования в файле может быть не более 256 различных цветов. Это звучит как довольно небольшое количество, и это так.

GIF-изображения также могут быть анимированными и иметь прозрачность.

Подходит для: логотипов, линейных рисунков и других простых изображений, которые должны быть маленькими. Действительно используется только для веб-сайтов.

GIF vs JPEG


JPEG - с потерями / прямой

Изображения JPEG были разработаны для того, чтобы сделать детальные фотографические изображения как можно меньше, удаляя информацию, которую человеческий глаз не заметит. В результате это формат с потерями, и сохранение одного и того же файла снова и снова приведет к потере большего количества данных с течением времени. Он имеет палитру тысяч цветов и поэтому отлично подходит для фотографий, но сжатие с потерями означает, что это плохо для логотипов и штриховых рисунков: они не только будут выглядеть нечеткими, но и такие изображения будут иметь больший размер файла по сравнению с GIF-файлами!

Хорошо для: Фотографии. Также градиенты.

JPEG vs GIF


PNG-8 - без потерь / индексированный

PNG - более новый формат, а PNG-8 (индексированная версия PNG) действительно является хорошей заменой GIF-файлам. К сожалению, однако, у него есть несколько недостатков: во-первых, он не может поддерживать анимацию, как GIF (может, но может, но только Firefox поддерживает ее, в отличие от GIF-анимации, поддерживаемой каждым браузером). Во-вторых, у него есть проблемы с поддержкой старых браузеров, таких как IE6. В-третьих, важные программы, такие как Photoshop, имеют очень плохую реализацию формата. (Черт возьми, Adobe!) PNG-8 может хранить только 256 цветов, например GIF.

Хорошо: главное, что PNG-8 работает лучше, чем GIF, - это поддержка альфа-прозрачности.

PNG-8 vs GIF


PNG-24 - без потерь / прямой

PNG-24 - отличный формат, который сочетает в себе кодирование без потерь и прямой цвет (тысячи цветов, как в JPEG). В этом отношении это очень похоже на BMP, за исключением того, что PNG на самом деле сжимает изображения, так что это приводит к гораздо меньшим размерам файлов. К сожалению, файлы PNG-24 по-прежнему будут больше, чем JPEG (для фотографий) и GIF / PNG-8 (для логотипов и графики), поэтому вам все равно нужно подумать, действительно ли вы хотите их использовать.

Несмотря на то, что PNG-24 допускают тысячи цветов при сжатии, они не предназначены для замены изображений JPEG. Фотография, сохраненная в формате PNG-24, вероятно, будет как минимум в 5 раз больше, чем эквивалентное изображение JPEG, с очень небольшим улучшением видимого качества. (Конечно, это может быть желательным результатом, если вас не интересует размер файла, и вы хотите получить максимально качественное изображение, какое только можете.)

Как и PNG-8, PNG-24 также поддерживает альфа-прозрачность.


SVG - без потерь / вектор

Тип файла, который в настоящее время становится все более популярным, - это SVG, который отличается от всех вышеперечисленных тем, что это векторный формат файла (все вышеупомянутые растр ). Это означает, что он на самом деле состоит из линий и кривых, а не пикселей. Когда вы увеличиваете векторное изображение, вы все равно видите кривую или линию. При увеличении растрового изображения вы увидите пиксели.

Например:

PNG vs SVG

SVG vs PNG

Это означает, что SVG идеально подходит для логотипов и иконок, которые вы хотите сохранить резкость на экранах Retina или разных размеров. Это также означает, что маленький логотип SVG можно использовать в гораздо большем (большем) размере без ухудшения качества изображения - что потребует отдельного более крупного (с точки зрения размера файла) файла с растровыми форматами.

Размеры файлов SVG часто крошечные, даже если они визуально очень большие, и это здорово. Однако стоит помнить, что это зависит от сложности используемых форм. SVG требует большей вычислительной мощности, чем растровые изображения, потому что математические вычисления участвуют в построении кривых и линий. Если ваш логотип особенно сложен, он может замедлить работу компьютера пользователя и даже иметь очень большой размер файла. Важно максимально упростить ваши векторные фигуры.

Кроме того, файлы SVG пишутся в формате XML, поэтому их можно открывать и редактировать в текстовом редакторе (!). Это означает, что его значения можно манипулировать на лету. Например, вы можете использовать JavaScript, чтобы изменить цвет значка SVG на веб-сайте, так же, как и текст (например, не нужно второе изображение), или даже анимировать их.

В целом они лучше всего подходят для простых плоских фигур, таких как логотипы или графики.

Надеюсь, это поможет!

47 голосов
/ 25 февраля 2010

JPEG не самый легкий для всех видов изображений (или даже для большинства). Углы и прямые линии и простые «заливки» (блоки сплошного цвета) будут выглядеть размытыми или иметь артефакты в них в зависимости от уровня сжатия. Это формат с потерями, и он лучше всего подходит для фотографий, где вы не можете четко видеть артефакты. Прямые линии (такие как рисунки, комиксы и т. Д.) Очень хорошо сжимаются в формате PNG и без потерь. GIF следует использовать только тогда, когда вы хотите, чтобы прозрачность работала в IE6, или если вы хотите анимацию. GIF поддерживает только 256 цветов палитры, но также без потерь.

Так что в основном вот способ определить формат изображения:

  • GIF, если требуется анимация или прозрачность, которая работает в IE6 (обратите внимание, прозрачность PNG работает после IE6)
  • JPEG, если изображение является фотографией.
  • PNG, если прямые линии, как на комическом или другом рисунке, или если требуется прозрачная широкая цветовая гамма (а IE6 не имеет значения)

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

7 голосов
/ 25 февраля 2010

Я обычно использую PNG, так как у него есть несколько преимуществ перед GIF. Раньше на GIF существовали патентные ограничения, но срок их действия истек.

GIF-файлы подходят для штриховых рисунков с острыми краями (например, логотипов) с ограниченным количеством цветов. Это позволяет использовать сжатие без потерь формата, в котором предпочтительны плоские области однородного цвета с четко определенными краями (в отличие от JPEG, который поддерживает плавные градиенты и более мягкие изображения).

GIF можно использовать для небольших анимаций и клипов с низким разрешением.

Ввиду общего ограничения палитры изображений GIF 256 цветами, оно обычно не используется в качестве формата для цифровой фотографии. Цифровые фотографы используют форматы файлов изображений, способные воспроизводить более широкий диапазон цветов, такие как TIFF, RAW или JPEG с потерями, которые больше подходят для сжатия фотографий.

Формат PNG является популярной альтернативой изображениям GIF, поскольку он использует более совершенные методы сжатия и не имеет ограничения в 256 цветов, но PNG не поддерживают анимацию. Форматы MNG и APNG, полученные из PNG, поддерживают анимацию, но не используются широко.

5 голосов
/ 25 февраля 2010

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

JPEG имеет лучшее сжатие со сложными изображениями, такими как фотографии.

5 голосов
/ 25 февраля 2010

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

По сравнению с GIF, PNG предлагает лучшее сжатие, большую палитру и больше функций, включая прозрачность. И это без потерь.

3 голосов
/ 30 декабря 2015

Существует возможность взлома, чтобы использовать изображения GIF для отображения истинного цвета. Можно подготовить анимацию в формате GIF с 256 кадрами с цветовой палитрой с задержкой 0 кадров и настроить отображение анимации только один раз. Таким образом, все кадры могут быть показаны одновременно. В конце отображается истинно цветное GIF-изображение.

Многие программы способны подготавливать такие изображения в формате GIF. Однако размер выходного файла больше, чем у файла PNG. Он должен использоваться, если это действительно необходимо.

3 голосов
/ 25 февраля 2010

GIF на основе палитры 256 цветов на изображение (по крайней мере, в его базовом воплощении). PNG может делать «TrueColour», т.е. 16,7 миллионов цветов из коробки. PNG без потерь сжимает лучше, чем GIF без потерь. GIF может делать «двоичную» прозрачность (непрозрачность 0% или непрозрачность 100%). PNG может обрабатывать альфа-пленки.

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

3 голосов
/ 25 февраля 2010

png имеет более широкую цветовую палитру, чем gif, и gif подходит, а png - нет. GIF может делать анимацию, что не может нормальный PNG. png-прозрачность поддерживается только браузером, выпущенным сравнительно недавно, чем IE6, но для этой проблемы есть исправление Javascript. Оба поддерживают альфа-прозрачность. В целом, я бы сказал, что вы должны использовать png для большинства веб-графики, в то время как jpeg для фотографий, скриншотов или аналогичных изображений, потому что сжатие png не очень хорошо работает на Thoose.

1 голос
/ 17 октября 2018

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

Для фотографий

jpg - по-прежнему самый широко поддерживаемый формат изображения.

webp - Новый формат от Google. Хороший потенциал, хотя браузер поддерживает не очень хорошо.

Для иконок и графики

svg - по возможности. Он хорошо масштабируется на экранах сетчатки, редактируется в текстовых редакторах и настраивается с помощью JS / CSS при загрузке в DOM.

png - если речь идет о растровой графике (т.е. при создании в фотошопе) Поддерживает прозрачность, которая очень важна в этом случае.

Для анимации

svg - плюс CSS анимации для векторной графики. Все преимущества SVG + мощь CSS анимации.

gif - по-прежнему самый широко поддерживаемый формат анимированных изображений.

mp4 - если анимированные изображения на самом деле являются короткими видеоклипами. Twitter / Whatsapp конвертирует GIF-файлы в mp4.

apng - приличный браузер поддерживает (т. Е. Не IE, Edge), но его создание не так просто, как GIF-файлы.

webp - близко к использованию mp4. Плохая поддержка

Это хорошее сравнение различных форматов анимированных изображений.

Наконец, какой бы ни был формат, обязательно оптимизируйте его - для каждого формата есть инструменты (например, SVGO, Guetzli, OptiPNG и т. Д.), Которые могут значительно сэкономить пропускную способность.

1 голос
/ 25 февраля 2010

Основным отличием является то, что GIF запатентован и немного более широко поддерживается. PNG является открытой спецификацией, и альфа-прозрачность не поддерживается в IE6. Поддержка была улучшена в IE7, но не полностью исправлена.

Что касается размеров файлов, GIF имеет меньшую цветовую палитру по умолчанию, поэтому на первый взгляд они имеют меньший размер. PNG-файлы имеют более крупную палитру по умолчанию, однако вы можете уменьшить их цветовую палитру, чтобы в результате размер файла уменьшился по сравнению с GIF. Проблема опять в том, что эта функция не поддерживается Internet Explorer.

Кроме того, поскольку PNG-файлы могут поддерживать альфа-прозрачность, они являются единственным вариантом, если вам требуется изменение прозрачности, отличное от двоичной прозрачности.

...