Безжалостно сжимая большие изображения для Интернета - PullRequest
8 голосов
/ 26 ноября 2008

У меня очень большое фоновое изображение (около 940x940 пикселей), и мне интересно, есть ли у кого-нибудь советы по сжатию такого большого файла, который не сможет обработать Photoshop? Лучшее сжатие без серьезной потери качества из Photoshop - PNG 8 (250 КБ); Кто-нибудь знает способ сжать изображение дальше, чем это (возможно, сжать PNG после того, как оно было сохранено)?

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

Ответы [ 17 ]

14 голосов
/ 26 ноября 2008

Сначала это будет зависеть от того, какое изображение вы пытаетесь сжать. Две основные категории:

  • Изображение
  • Иллюстрация

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

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

Теперь, когда вы конкретно упомянули PNG, я углублюсь в это обсуждение из моего опыта использования PNG.

Во-первых, дальнейшее сжатие PNG не является приемлемым вариантом, поскольку невозможно сжать данные, которые уже были сжаты . Это верно для любого сжатия данных; удаление энтропии из исходных данных (в основном повторяющиеся шаблоны, которые могут быть представлены более компактными способами) приводит к уменьшению объема пространства, необходимого для хранения информации. PNG уже использует методы для эффективного сжатия изображений без потерь.

Тем не менее, есть как минимум один возможный способ уменьшить размер PNG: на уменьшить количество цветов, хранящихся в изображении . Используя «индексированные цвета» (по сути, встраивая пользовательскую палитру в само изображение), вы можете уменьшить размер файла. Однако, если у изображения много цветов для начала (например, с цветовыми градиентами или фотографическим изображением), вы, возможно, не сможете уменьшить количество цветов, используемых в изображении, без заметной потери качества.

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


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

Я бы также отметил, что GIF поддерживает только 8-битные изображения, поэтому, если изображение имеет более 256 цветов, вам придется уменьшить используемые цвета.

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

7 голосов
/ 26 ноября 2008

Взгляните на http://www.irfanview.com/, старое, но приятное.

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

Здесь также доступен PNGOUT http://advsys.net/ken/utils.htm,, что, по-видимому, очень хорошо.

5 голосов
/ 26 ноября 2008

Вот точка, которую другие авторы, возможно, не заметили, что я обнаружил экспериментально:

В некоторых установках стандартным поведением является сохранение полной копии цветового профиля изображения вместе с изображением.

То есть карта калибровки устройства, обычно SRGB или что-то подобное, которая говорит агентам, как лучше всего сопоставить цвет с цветами реального мира, а не с независимыми от устройства.

Этот профиль изображения, однако, довольно большой, и может сделать некоторые файлы, которые вы ожидаете, очень маленькими, очень большими, например, изображение размером 1 на 1 пиксель, потребляющее огромные 25 КБ. Даже чистый формат BMP (без сжатия) может представлять 1 пиксель меньше.

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

Вы можете удалить эти данные с помощью другого инструмента, такого как gimp, но это может занять немного времени, если имеется много файлов.

3 голосов
/ 29 ноября 2008

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

2 голосов
/ 26 ноября 2008

Smush.It утверждает, что идет "за пределы ограничений Photoshop". И это бесплатно и в Интернете.

2 голосов
/ 26 ноября 2008

Если изображение фотографического характера, JPEG сожмет его намного лучше, чем PNG8, для такой же потери качества.

1 голос
/ 04 января 2013

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

Инструмент бесплатный и действительно стоит попробовать.

1 голос
/ 29 июня 2012

http://www.jpegmini.com - это новый сервис, который создает стандартные jpgs с впечатляюще маленьким размером файла. У меня был хороший успех с этим.

1 голос
/ 27 декабря 2008

Чтобы получить больше от файла JPEG, вы можете использовать «Измененную настройку качества» в диалоговом окне «Сохранить как Web».

  1. Создайте маску / выделение, содержащее белый цвет, где вы хотите сохранить больше деталей, например, текст. Вы можете использовать Quick-Mask, чтобы нарисовать маску кистью. Это помогает растушевывать выделение, это приводит к хорошему переходу от белого к черному на следующем шаге.
  2. сохранить эту маску / выделение как канал и дать каналу имя
  3. Использовать файл-> Сохранить как Интернет
  4. Выберите JPEG в качестве формата файла
  5. Рядом с полем Качество есть маленькая кнопка с кружком на нем. Нажмите это. Выберите сохраненный канал на шаге 2 и поиграйте с настройкой качества для белой и черной части содержимого канала.
1 голос
/ 26 ноября 2008

Я бы сказал, если только вы не уверены, что у вашей аудитории есть пропускная способность.

Следующим является jpeg2k.

...