Растровая графика. Поединок форматов
Растровая графика. Поединок форматов
У большинства пользователей PC жесткий диск изобилует картинками, которые, однако, у многих не так уж и часто используются. Кто-то, кому они совершенно не нужны, архивирует их в RAR и зарывает в какую-нибудь отдаленную папку, которую потом сам не может найти. Некоторые, наоборот, все время качают картинки из Сети и покупают диски с Clipart'ами и все это сохраняют на "винт". И удивляются, почему на нем становится так "тесно". Сегодня мы поговорим о том, какой растровый формат лучше подходит для хранения изображений.
Для того, чтобы это узнать, проведем глобальную экспертизу. На входе мы имеем два изображения: первое — полноцветный градиент, второе — фотография моего кота:). Оба имеют разрешение 640x480 и в 24-битном BMP весят по 900 Kb. Как мы понимаем, формат не самый подходящий: на моем жестком диске около 15.000 изображений, и, если все их хранить в BMP с разрешением 640x480 (а у большинства из них оно выше), то они "оккупируют" 13,5 Gb, т.е. почти половину моего жесткого диска. Значит, чтобы освободить место на диске, картинки надо конвертировать. Мы с вами попытаемся выяснить, какой формат лучше для этого подходит.
Внимание: все преобразования проводились в программе IrfanView, которую можно скачать отсюда: http://www.irfanview.com . Irfan View — мощный просмотрщик графики со встроенным редактором с поддержкой массы эффектов и возможностью создавать слайд-шоу и сохранять его в EXE/SCR, главный конкурент знаменитого ACDSee. Для проведения экспертизы я выбрал именно его, потому что он поддерживает массу форматов и очень хорошо (с минимальными потерями качества) "урезает" глубину цвета.
Формат 1. GIF
Искажение качества: нет
Максимальное количество цветов: 256
GIF — формат, очень распространенный в Интернете: практически все растровые баннеры в Сети сохранены в GIF. Этот формат — самый экономный среди тех, которые позволяют записывать в них анимацию. Надо отметить, что при конвертировании градиента в 256 цветов качество почти не исказилось (браво, IrfanView), а вот размерчик значительно поубавился — до 39 Kb (почти в 25 раз!). Со вторым изображением дело обстоит несколько иначе — искажение качества от урезания палитры такое же (т.е. почти никакое), а вот размер картинки составляет 254 Kb.
Формат 2. JPEG
Искажение качества: есть
Максимальное количество цветов: 16 млн
Формат JPG — самый распространенный в Сети для хранения статичных изображений. Он очень компактен, но для него характерно искажение качества. Это явление не есть очень приятное, но наша первая картинка от него практически не пострадала. Объясняю, почему.
Как в GIF, так и в JPG для сжатия используются определенные алгоритмы. Скажем, в JPEG берется область 8x8 клеток, и в ее изображении ищется какая-либо закономерность. Если какие-то мелкие детали не подходят, то они корректируются — это и вызывает искажения качества.
В нашем случае закономерность вполне очевидна — градиент все-таки. Так вот, эта закономерность настолько простая, что сжатие достигает стократной величины. Т.е. 900 Kb были успешно (и без потерь качества) уменьшены до 9. С котом, ввиду его сложного характера (в смысле, изображения:)), результат не такой блестящий, но тоже очень неплохой — 49 Kb.
Кстати, в JPEG есть такая опция, как степень сжатия. Чем выше процент, тем выше качество, но при этом увеличивается размер, и наоборот: на низком проценте достигается крошечный размер, но качество сильно страдает. IrfanView этого параметра не сообщает и не спрашивает, так что назвать процент качества наших картинок я не могу. Но при использовании другого просмотрщика (например, ACDSee или SEA) такой запрос может появиться. Рекомендую устанавливать степень сжатия от 70 до 85.
С JPG все ясно, но какой формат дает оптимальный результат без искажения качества?
Формат 3. TIFF
Искажение качества: нет
Максимальная цветность: 24 бит
Формат TIFF очень часто используется теми, кто сканирует изображения через Imaging. Эту когорту составляют главным образом те, для кого возможности компьютера ограничиваются только Paint, WordPad (в лучшем случае Word'ом) и уже названным Imaging. Так вот, господа. Забудьте о TIFF! Его результаты еще кошмарнее, чем у BMP! Оба изображения у меня занимают 902 Kb.
Формат 4. PCX
Искажение качества: нет
Максимальная цветность: 16 млн
Формат PCX раньше очень активно использовался для хранения изображений в играх (скажем, фоновые заставки и скриншоты в бессмертном Star Craft и текстуры моделей в Quake2). Сжатие, как и в случае с GIF и JPG, производится при помощи поиска закономерностей. Но алгоритм этого поиска явно недоработан. Формат PCX показал самые противоречивые результаты: градиент был успешно сохранен в файл размером 32 Kb (меньше, чем GIF!), а кот "раздобрел" до 911 Kb, превзойдя даже BMP с TIFF. Лично я не нахожу такой разбежке никакого вразумительного объяснения. Так что переходим к следующему формату.
Формат 5. PNG
Искажение качества: нет
Максимальная цветность: 24 бит
Формат PNG — это тот же GIF, только в 24-битной цветности. Используется для хранения полноцветных анимированных баннеров и не только. Наибольшее распространение формат получил в Сети — даже его название, расшифровывающееся как "Portable Network Graphics", ясно говорит о его предназначении. Все полноцветные изображения, для которых нежелательны малейшие потери качества, лучше всего сохранять в PNG. Изображение с котом в PNG заняло 528 Kb — далеко не лучший результат. А вот с градиентом PNG — абсолютный рекордсмен: изображение занимает меньше 3 Kb в полноцветном варианте! В 300 раз меньше, чем в BMP!
Итог
Два оптимальных формата для хранения растровой графики — PNG и JPG. Первый идеален для сохранения изображений, содержащих градиенты, второй — для фотографий и пр. изображений, для которых небольшие потери качества не смертельны.
Практика показала, что с градиентами (и сложными изображениями, в состав которых входят градиенты) PNG справляется даже лучше, чем JPG! Если вы хотите, скажем, поставить фоном для web-страницы перелив, то сохраняйте его в PNG.
Возможно, читатель найдет более компактные форматы, но мне так не кажется — в противном случае они давно бы уже использовались повсеместно. Изучение многих новых форматов — пустая трата времени. Я лично совсем недавно узнал о существовании формата JPEG2000 и тут же решил его опробовать, предполагая, что он превзойдет своего предшественника, что должно бы следовать из названия. Но все мои надежды оказались тщетны: в JPEG2000 фотография моего кота заняла 134 Kb.
Впрочем, часто метод тыка — самый действенный способ найти что-нибудь стоящее. Если вы решили им воспользоваться — да направит вас поисковик на нужный сайт:)... Мои наилучшие пожелания!
Михаил Федотов, aka $KY$PE@R
У большинства пользователей PC жесткий диск изобилует картинками, которые, однако, у многих не так уж и часто используются. Кто-то, кому они совершенно не нужны, архивирует их в RAR и зарывает в какую-нибудь отдаленную папку, которую потом сам не может найти. Некоторые, наоборот, все время качают картинки из Сети и покупают диски с Clipart'ами и все это сохраняют на "винт". И удивляются, почему на нем становится так "тесно". Сегодня мы поговорим о том, какой растровый формат лучше подходит для хранения изображений.
Для того, чтобы это узнать, проведем глобальную экспертизу. На входе мы имеем два изображения: первое — полноцветный градиент, второе — фотография моего кота:). Оба имеют разрешение 640x480 и в 24-битном BMP весят по 900 Kb. Как мы понимаем, формат не самый подходящий: на моем жестком диске около 15.000 изображений, и, если все их хранить в BMP с разрешением 640x480 (а у большинства из них оно выше), то они "оккупируют" 13,5 Gb, т.е. почти половину моего жесткого диска. Значит, чтобы освободить место на диске, картинки надо конвертировать. Мы с вами попытаемся выяснить, какой формат лучше для этого подходит.
Внимание: все преобразования проводились в программе IrfanView, которую можно скачать отсюда: http://www.irfanview.com . Irfan View — мощный просмотрщик графики со встроенным редактором с поддержкой массы эффектов и возможностью создавать слайд-шоу и сохранять его в EXE/SCR, главный конкурент знаменитого ACDSee. Для проведения экспертизы я выбрал именно его, потому что он поддерживает массу форматов и очень хорошо (с минимальными потерями качества) "урезает" глубину цвета.
Формат 1. GIF
Искажение качества: нет
Максимальное количество цветов: 256
GIF — формат, очень распространенный в Интернете: практически все растровые баннеры в Сети сохранены в GIF. Этот формат — самый экономный среди тех, которые позволяют записывать в них анимацию. Надо отметить, что при конвертировании градиента в 256 цветов качество почти не исказилось (браво, IrfanView), а вот размерчик значительно поубавился — до 39 Kb (почти в 25 раз!). Со вторым изображением дело обстоит несколько иначе — искажение качества от урезания палитры такое же (т.е. почти никакое), а вот размер картинки составляет 254 Kb.
Формат 2. JPEG
Искажение качества: есть
Максимальное количество цветов: 16 млн
Формат JPG — самый распространенный в Сети для хранения статичных изображений. Он очень компактен, но для него характерно искажение качества. Это явление не есть очень приятное, но наша первая картинка от него практически не пострадала. Объясняю, почему.
Как в GIF, так и в JPG для сжатия используются определенные алгоритмы. Скажем, в JPEG берется область 8x8 клеток, и в ее изображении ищется какая-либо закономерность. Если какие-то мелкие детали не подходят, то они корректируются — это и вызывает искажения качества.
В нашем случае закономерность вполне очевидна — градиент все-таки. Так вот, эта закономерность настолько простая, что сжатие достигает стократной величины. Т.е. 900 Kb были успешно (и без потерь качества) уменьшены до 9. С котом, ввиду его сложного характера (в смысле, изображения:)), результат не такой блестящий, но тоже очень неплохой — 49 Kb.
Кстати, в JPEG есть такая опция, как степень сжатия. Чем выше процент, тем выше качество, но при этом увеличивается размер, и наоборот: на низком проценте достигается крошечный размер, но качество сильно страдает. IrfanView этого параметра не сообщает и не спрашивает, так что назвать процент качества наших картинок я не могу. Но при использовании другого просмотрщика (например, ACDSee или SEA) такой запрос может появиться. Рекомендую устанавливать степень сжатия от 70 до 85.
С JPG все ясно, но какой формат дает оптимальный результат без искажения качества?
Формат 3. TIFF
Искажение качества: нет
Максимальная цветность: 24 бит
Формат TIFF очень часто используется теми, кто сканирует изображения через Imaging. Эту когорту составляют главным образом те, для кого возможности компьютера ограничиваются только Paint, WordPad (в лучшем случае Word'ом) и уже названным Imaging. Так вот, господа. Забудьте о TIFF! Его результаты еще кошмарнее, чем у BMP! Оба изображения у меня занимают 902 Kb.
Формат 4. PCX
Искажение качества: нет
Максимальная цветность: 16 млн
Формат PCX раньше очень активно использовался для хранения изображений в играх (скажем, фоновые заставки и скриншоты в бессмертном Star Craft и текстуры моделей в Quake2). Сжатие, как и в случае с GIF и JPG, производится при помощи поиска закономерностей. Но алгоритм этого поиска явно недоработан. Формат PCX показал самые противоречивые результаты: градиент был успешно сохранен в файл размером 32 Kb (меньше, чем GIF!), а кот "раздобрел" до 911 Kb, превзойдя даже BMP с TIFF. Лично я не нахожу такой разбежке никакого вразумительного объяснения. Так что переходим к следующему формату.
Формат 5. PNG
Искажение качества: нет
Максимальная цветность: 24 бит
Формат PNG — это тот же GIF, только в 24-битной цветности. Используется для хранения полноцветных анимированных баннеров и не только. Наибольшее распространение формат получил в Сети — даже его название, расшифровывающееся как "Portable Network Graphics", ясно говорит о его предназначении. Все полноцветные изображения, для которых нежелательны малейшие потери качества, лучше всего сохранять в PNG. Изображение с котом в PNG заняло 528 Kb — далеко не лучший результат. А вот с градиентом PNG — абсолютный рекордсмен: изображение занимает меньше 3 Kb в полноцветном варианте! В 300 раз меньше, чем в BMP!
Итог
Два оптимальных формата для хранения растровой графики — PNG и JPG. Первый идеален для сохранения изображений, содержащих градиенты, второй — для фотографий и пр. изображений, для которых небольшие потери качества не смертельны.
Практика показала, что с градиентами (и сложными изображениями, в состав которых входят градиенты) PNG справляется даже лучше, чем JPG! Если вы хотите, скажем, поставить фоном для web-страницы перелив, то сохраняйте его в PNG.
Возможно, читатель найдет более компактные форматы, но мне так не кажется — в противном случае они давно бы уже использовались повсеместно. Изучение многих новых форматов — пустая трата времени. Я лично совсем недавно узнал о существовании формата JPEG2000 и тут же решил его опробовать, предполагая, что он превзойдет своего предшественника, что должно бы следовать из названия. Но все мои надежды оказались тщетны: в JPEG2000 фотография моего кота заняла 134 Kb.
Впрочем, часто метод тыка — самый действенный способ найти что-нибудь стоящее. Если вы решили им воспользоваться — да направит вас поисковик на нужный сайт:)... Мои наилучшие пожелания!
Михаил Федотов, aka $KY$PE@R
Компьютерная газета. Статья была опубликована в номере 30 за 2003 год в рубрике soft :: графика