Тест Lossless оптимизаторов изображений (PNG и JPG)

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

В тесте принимали участие следующие программы.

Для PNG:
1) Leanify 0.4.3 (x64): github.com/JayXon/Leanify/releases
2) pingo v0.79c: css-ig.net/pingo
3) pinga v0.09: css-ig.net/pinga
4) OptiPNG 0.7.6: optipng.sourceforge.net
5) pngout: advsys.net/ken/utils.htm
6) PngOptimizer 2.5 (x64): psydk.org/pngoptimizer
7) advpng aka AdvanceCOMP v1.23: www.advancemame.it/download
8) ECT 0.6 (x64): github.com/fhanau/Efficient-Compression-Tool
9) TruePNG 0.6.2.2: x128.ho.ua/pngutils.html
10) pngwolf-zopfli 1.1.1 (x64): github.com/jibsen/pngwolf-zopfli

Для JPEG:
1) Leanify 0.4.3 (x64): github.com/JayXon/Leanify/releases
2) pingo v0.79c: css-ig.net/pingo
3) ECT 0.6 (x64): github.com/fhanau/Efficient-Compression-Tool
4) mozjpeg 3.2 (x64): github.com/mozilla/mozjpeg
5) jhead 3.00: www.sentex.net/~mwandel/jhead
6) jpegoptim v1.4.4 (x64): github.com/tjko/jpegoptim
7) jpegtran: jpegclub.org/jpegtran

Было отобрано 100 PNG файлов и 100 JPG файлов в качестве тестовой выборки. Разных размеров и разрешения от совсем маленьких до огромных. Каждая из программ была запущена на всём наборе. Считался размер файла после оптимизации и сколько времени потребовалось программе на оптимизацию. Сводные таблицы приведены ниже.

Таблица 1. Лучшие оптимизаторы PNG по уровню компрессии

Максимум 88.49
1 место ECT 88.98
2 место Leanify 89.62
3 место Pingo 89.69
4 место pngwolf 91.34
5 место pngout 91.85
6 место TRUEPng 93.01
7 место Optipng 94.19
8 место pinga 94.8
9 место PNGOptimizer 95.13
10 место advpng 97.27

Таблица 2. Лучшие оптимизаторы PNG по скорости работы
1 место PNGOptimizer 00:04:08
2 место pinga 00:21:41
3 место Pingo 00:23:15
4 место TruePNG 01:53:29
5 место Leanify 01:57:00
6 место pngout 02:53:09
7 место pngwolf 02:55:26
8 место ECT 03:06:08
9 место advpng 03:25:34
10 место Optipng 03:39:05

Таблица 3. Сводная таблица по PNG оптимизаторам
ПО Speed Rank Compression Rank Overall rank Open source
Pingo 3 3 6 -
Leanify 5 2 7 +
ECT 8 1 9 +
PNGOptimizer 1 9 10 +
TruePNG 4 6 10 -
pinga 2 8 10 -
pngout 6 5 11 +
pngwolf 7 4 11 +
Optipng 10 7 17 +
advpng 9 10 19 +

Таблица 4. Лучшие оптимизаторы JPG по уровню компрессии
1 место ECT 89.996
1 место pingo 89.996
1 место leanify 89.997
1 место mozjpeg 89.999
5 место jpegoptim 90.880
6 место jpegtran 90.924
7 место jhead 99.592

Таблица 5. Лучшие оптимизаторы JPG по скорости работы
1 место jhead 00:00:25
2 место jpegtran 00:00:52
3 место jpegoptim 00:01:03
4 место leanify 00:01:30
5 место pingo 00:01:42
6 место mozjpeg 00:01:55
7 место ECT 00:02:52

Таблица 6. Сводная таблица по JPG оптимизаторам
Soft Speed Rank Compression Rank Overall rank Open source
leanify 4 1 5 +
jpegoptim 3 2 5 +
jpegtran 2 3 5 +
jhead 1 4 5 +
pingo 5 1 6 -
mozjpeg 6 1 7 +
ECT 7 1 8 +

Параметры запусков


PNG:
Leanify -i 15 -q
Pingo -s4
pinga -lossless -more
Optipng -o7 -strip all -quiet
pngout /s0 /q /y /r /d0 /mincodes0 /k1
PngOptimizer -file
advpng -z -q -4 -i 20
ECT --allfilters --mt-deflate -strip --strict -quiet -9
TruePNG /i0 /tz /quiet /y /md remove all /g0 /o4
pngwolf --strip-optional --out-deflate=zopfli,iter=30 --in= --out=

JPEG:

Leanify -i 15 -q
Pingo -s4
ECT --mt-deflate -strip -progressive --allfilters --strict -quiet -9
mozjpegtran -outfile -progressive
jhead -autorot -purejpg -di -dx -dt -zt -q
jpegoptim --strip-all -o -q --all-progressive
jpegtran -copy none -progressive

Для своих внутренних целей решили использовать Leanify. И сделали небольшой тестовый сайтик, если кому-то нужно оптимизировать небольшое число изображений он-лайн:
lossless-image-optimization.com

Для локального запуска можно использовать FileOptimizer. Он запускает последовательно почти все указанные выше оптимизаторы один за одним на одном файле и как следствие работает достаточно долго, но выдаёт результат близкий к максимальному.

Ссылки
Архив с тестовыми файлами PNG (100 штук)
Архив с тестовыми файлами JPG (100 штук)
Подробная таблица по всем файлам на Google.Docs

Комментарии (3)

  • 10 апреля 2017 в 20:14

    0

    так оптимизаторы сжимают или подбирают параметры?
    попробовали бы еще на CUDA
    http://www.fastcompression.com/download/download.htm
    • 10 апреля 2017 в 20:20

      +1

      Все оптимизаторы в тесте выполняют оптимизацию файлов без потери качества. Размер уменьшается, но на качество самого файла не влияет. Насколько мне известно (могу ошибаться) для CUDA таких оптимизаторов нет.
    • 10 апреля 2017 в 20:51

      0

      Они оптимизируют таблицы типа Huffman, удаляют всякую текстовую информацию и т.п…

© Habrahabr.ru