Сморщенный слон в консервной банке: форматы графических файлов. Часть IV
Приложение #1. Эффективность алгоритмов сжатия: да не подохнет истина в сточной канаве!
Мы откроем вам глаза и нахлобучим их на факты..
..которые говорят о том, что невозможно сравнивать разные способы компрессии на одном и том же графическом файле. По меньшей мере, необходимо выделить два типа графических данных: фотографии или похожие на них композиции с плавными переходами цветов и рисунки, логотипы и прочая графика с небольшим количеством цветов и четкими линиями. Само собой, эффективность разных алгоритмов сжатия, примененных к этим двум типам изображениям, будет разной. Конечно же, я позаботился о справедливости и отдал на растерзание форматам целых два изображения - фотографию и рисунок.
Вот эта замечательная фотография на тему единства человека и природы (?), только с вдвое большим разрешением, подвергалась насилию со стороны почти двадцати графических форматов. Все копии были получены с помощью Photoshop, после чего размер каждой был записан, и на основе этих записей была построена диаграмма. Прошу прощения у пользователей Netscape 4.х, но для того, чтобы увидеть что-то большее, чем цифры, вам придется поставить себе браузер, поддерживающий фиксированную ширину столбца.
Поскольку в первом случае сжималась фотография, то все параметры при сохранении указывались как наиболее подходящие для фотографии. Например, файлы gif и png имели палитру 256 цветов с включенным dithering, везде где можно ставилась максимальная глубина цвета и компрессия без потерь. Поскольку алгоритм jpg и так представлен в четырех вариациях, я отключил его в формате FlashPix (encoding: none) и eps (encoding: binary, все флажки скинуты). Кроме того, я разбил форматы на четыре группы по их основному применению: для представления изображений на экране и хранения на диске (желтый), для публикаций в Интернет (зеленый), для полиграфии (розовый) и редкие форматы (серый). Вот что получилось:
bmp
864.056
psd
695.636
mac pict
695.030
pcx
675.720
png 24
328.736
jpg max.
167.514
gif
162.257
png 8
141.477
jpg high
45.567
jpg med.
24.513
jpg low
17.150
eps
1.156.306
scitex
866.048
tiff
371.172
FlashPix
1.406.464
targa
1.152.044
raw
868.352
pixar
865.280
amiga iff
612.194
Видно, что в каждой группе наметился свой лидер. Тем не менее, степень сжатия играет первичную роль лишь для Интернет. Здесь безусловный лидер - формат jpg, в котором приемлемый уровень качества сохранялся вплоть до степени компрессии medium включительно. В прочих же группах выбор формата необходимо проводить с учетом таких факторов как совместимость, поддержка дополнительных функций, мультиплатформенность, надежность..
Для того чтобы проверить эффективность сжатия рисованной графики с небольшим количеством цветов, ваш покорный слуга отобрал картинку справа (изначально в ней было 22 цвета и она была в два раза больше). На этот раз все опции выставлялись для максимального сжатия рисунка: gif и png имели палитру 4 цвета без dithering, в остальных форматах изображение сохранялось в режиме индексированных цветов с его исходной палитрой (22 цвета). Некоторые форматы не позволяли хранение данных в режиме индексированных цветов; в этом случае я переводил изображение в градации серого. Как и в прошлый раз было выключено сжатие jpg в форматах eps и FlashPix. Итак, смотрим:
pcx
53.065
png 24
42.019
bmp
41.180
psd
41.106
mac pict
40.762
jpg max.
47.543
jpg high
37.070
jpg med.
28.605
jpg low
23.826
png 8
15.542
gif
11.724
eps
1.156.278
scitex
290.048
tiff
27.542
FlashPix
1.403.392
pixar
857.088
targa
288.812
raw
288.100
amiga iff
53.690
Закономерный результат - практически все форматы поменялись местами. В группе "экранных" форматов отлично сработали заложенные в них алгоритмы компрессии без потерь - размеры файлов практически сровнялись. Чего нельзя сказать о группе форматов, предназначенных для Интернет: здесь jpg уступил свои позиции gif и png. Молодцом показал себя tiff, а также amiga iff. Даже raw, несмотря на полное отсутствие сжатия, позволил сократить размер файла втрое за счет единственного канала с градациями серого, а не трех цветных. Подводя итог, замечу, что существующее разнообразие форматов графики должно дать вам свободу выбора подходящего под ту или иную ситуацию. Для того, чтобы сделать этот выбор максимально быстрым, точным и безболезненным и была написана эта статья.