Блог | Онлайн-сервисы для оптимизации JPEG

Рассмотрим существующие онлайн-инструменты для оптимизации/сжатия JPEG. Вот все сайты, которые я смог найти, просмотрев множество статей на эту тему:

  1. http://www.jpegmini.com/
  2. http://kraken.io/
  3. http://www.smushit.com/
  4. http://www.imageoptimizer.net/
  5. http://www.webresizer.com/resizer/
  6. http://jpeg-optimizer.com/
  7. http://punypng.com/
  8. http://tools.dynamicdrive.com/imageoptimizer/
  9. http://compressnow.com/
  10. http://www.jpegreducer.com/

Из них 1,2,7 - платные сервисы, которые имеют бесплатные версии с ограничениями. Остальные - бесплатные.

В этот список я, само собой, не включил наш сервис http://optimin.ru и его клоны на английском языке.

Пригодность для веб-оптимизации

С точки зрения оптимизации для веб, существует только одно требование к таким сервисам. Кандидаты должны иметь в своих возможностях сжатие с потерями, качеством 50-80%. Все, что больше 80% - избыточно для публикации в интернет. Если конечно ваш сайт не посвящен профессиональной фотографии. Цифры 50-80% уже много раз обсуждались в сети, интересующиеся могут убедиться сами. При этом желательно иметь возможность задавать качество вручную.

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

  1. JPEGMini не дает возможности задавать качество вручную. Создатели утверждают, что уровень сжатия определяется автоматически. Опыты показали, что качество действительно меняется в зависимости от изображения, поэтому назовем его условно годным.

  2. Kraken.io имеет серьезные ограничения на размер файла в бесплатной версии - 1MB. Что уже делает его мало полезным, если вы не намерены платить. По уровню искажений удалось определить, что Kraken.io сжимает JPEG с фиксированным качеством - 95%. Это делает его бесполезным для наших целей.

  3. SmushIt от Yahoo - не умеет сжимать с потерями. Эффект от его работы мизерный. Он совершенно бесполезен.

  4. ImageOptimizer.net - предоставляет программу для скачивания и веб-интерфейс, который... не работает.

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

  6. JPEG-Optimizer - как и предыдущий инструмент, считает, что лучше вас знает, какого размера должно быть ваше изображение, по умолчанию уменьшает его до 400 пикселов. Позволяет задавать качество, и есть возможность снимать флажок resize. Поэтому оставим и его.

  7. PunyPNG - обладает какими-то совсем уж смешными ограничениями в бесплатной версии. Несмотря на заявленный предел в 500KB, на все мои попытки закачать хоть какой-то файл в диапазоне от 100KB до 300KB, этот сервис отвечал, что превышена квота. Поэтому исключаем его из дальнейшего рассмотрения.

  8. DynamicDrive - не позволяет задавать качество, но выдает несколько вариантов закаченного изображения в разном качестве, что делает его вполне пригодным.

  9. CompressNow - позволяет задавать качество, но почему-то наоборот. 20% означает 80%. При этом все файлы переименовывает в image.jpg. Но мы его оставим для дальнейшего изучения.

  10. JpegReducer - аналог DynamicDrive.

Итак, для веб-оптимизации пригодны: 1 (условно), 5, 6, 8, 9, 10.

Теперь сравним наш компрессор с конкурентами. Так как JPEGMini не позволяет задавать качество, то сравнение требует особого подхода.

Алгоритм сравнения

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

Исходные фотографии

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

https://developers.google.com/speed/webp/gallery1

Исходные изображения в формате PNG я преобразовал в JPEG с качеством 100%. Вот эти файлы: 1, 2, 3, 4, 5.

Тест

Первая фотография, размер - 308238:

Оригинал

Я прогнал первую фотографию через JPEGMini, потом, сравнивая искажения (по береговым линиям реки), определил, что JPEGMini сжал ее на уровне 89-90%. На этом этапе уже понятно, что JPEGMini не годится для веб-оптимизации, т.к. его сжатие не всегда укладывается в заданные параметры (50-80%). Но так как этот сервис очень раскрученный, не будем его исключать из теста.

Вариант JPEGMini, размер - 80236:

JPEGMini

Вариант Optimin, качество 90%, размер - 65128:

JPEGMini

Вот результаты сжатия первого изображения с помощью разных сервисов, при качестве 90%.

Сервис Размер %
JPEGMini 80236 26.03
WebResizer 89165 28.93
JPEG-Optimizer 69986 22.71
DynamicDrive 89071 28.90
CompressNow 90446 29.34
JpegReducer 88628 28.75
Optimin 65128 21.13
RIOT 65433 21.23

* RIOT - это не онлайн-сервис. Это очень эффективная программа для сжатия JPEG, работающая, к сожалению, только под Windows. Я привожу результаты работы этой программы просто для информации, в качестве эталона.

Второе изображение было сжато JPEGMini с качеством примерно 85-86%. Но не все сервисы позволяют задавать такую цифру (не попадает в шаг), поэтому тестирую только те, что позволяют.

Сервис Размер %
JPEGMini 117795 28.18
WebResizer 125782 30.09
JPEG-Optimizer 106879 25.57
CompressNow 106584 25.50
Optimin 98211 23.50
RIOT 98924 23.67

Фотография 3 - интересный случай. Она размыта больше других, и на ней трудно найти четкие контуры, чтобы сравнивать искажения. Но все же, я смог достаточно надежно, как мне кажется, определить, что JPEGMini сжал ее с качесвом 75-77%. Помогли ветви дерева на фоне неба. Я заметил, что это нормально для JPEGMini, резко снижать качество на размытых фото, и с этой логикой трудно поспорить.

Сервис Размер %
JPEGMini 354150 24.64
WebResizer 330638 23.01
JPEG-Optimizer 286097 19.91
CompressNow 286353 19.93
Optimin 267616 18.62
RIOT 268539 18.69

Выводы

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

Следует особо отметить "достижения" JPEGMini. В моих экспериментах с этим сервисом, я столкнулся с удивительным фактом. Судя по всему, перед сжатием изображения, JPEGMini пропускает его через шумоподавление. Волоски на руках исчезают, удаленная трава и удаленные кирпичные стены покрываются проплешинами. Эффект очень похож на то, что бывает при применении "patch-based image denoising". Если прогнать изображение через легкое шумоподавление, то это не сильно убьет контуры. Зато алгоритм сжатия JPEG будет намного эффективней, потому что во многих местах размываются резкие перепады цвета. Тем более удивительно, что JPEGMini сжимает фото настолько неэффективно. Автоматическое определение качества сжатия в этом сервисе представляется как "новая супертехнология", но алгоритм определения сильно хромает. Вполне возможно, что он основан на информации из того же шумоподавления. Боюсь, в лице JPEGMini мы видим очередную лже-технологию. Но, как я и говорил ранее, JPEGMini не поможет вашему сайту просто потому, что предназначен больше для уничтожения домашних фото-коллекций. Его сжатие неприемлемо для веб-оптимизации. Для ускорения сайтов потребуется что-то более эффективное.

Найти нужный софт для компьютера, я полагаю, не проблема. Если вы используете Windows, то можно установить бесплатный RIOT. Для Linux я бы порекомендовал консольную программу JPEGOptim. Из онлайн-инструментов, объективно, для веб-оптимизации подходит только Optimin (и его клоны). И не только потому, что это наш инструмент :-) Я действительно не видел более удобного и эффективного онлайн-инструмента для того, чтобы уменьшать размер фото до минимума.

- Глеб