desтруктивный журнал - Написал статейку в локальную wiki о том что jpeg не панацея..
February 8th, 2008
03:24 pm

[Link]

Previous Entry Add to Memories Tell A Friend Next Entry
Написал статейку в локальную wiki о том что jpeg не панацея..
Или что такое форматы файлов (для изображений) и чем они отличаются (в контексте уменьшения размера файла).

А то юзеры у нас неграммотные.. =)


Как оптимально уменьшать размер картинки

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

Какие бывают форматы сохранения растровых изображений и их характерные отличия

  1. BMP - формат без сжатия (либо использующий сжатие без потерь RLE). Бывает с индексированной палитрой (256 цветов максимум), бывает с полноцветным описанием цветового пространства. Подходит для чего угодно, но размер файла очень большой.
  2. JPEG - "Сжатие с потерями". Подходит для изображений в которым много цветовых переходов и нет однородных заливок (пример: фотографии, с некоторыми ограничениями - временные разрезы). Лишь при соблюдении этих условий сжатие будет существенно. Сжатие характеризуется в процентах (но иногда эти проценты показывают разные величины, некоторые проагрммы выражают в них качество картинки (quality), некоторые степень сжатия (Compress Ratio). Т.е. эти данные противоположны). На изображениях с однородными областями, появятся артефакты сжатия, вокруг четких границ. (Есть еще формат Jpeg2000 основанный на фрактальном сжатии, но нам он не нужен :))
  3. GIF - может содержать от 1 до 256 цветов. Сжатие LZW, более продвинутое по отношению к RLE у BMP, благодаря чему очень хорошо сжимаются изображения с однородными областями (пример: карты - белый фон значителен, общее количество цветов не более двух-трех десятков).
  4. PNG - практически идентичен GIF, но может содержать кроме индексированной палитры, полноцветную. Сжатие без потерь.
  5. TIF - универсальный формат. Так называемый контейнер. В большинстве случаев дает более оптимальный результат по отношению к другим форматам. Отличается тем, что может быть в любом цветовом пространстве (black\white, grayscale, индексированый цвет, RGB), и может для сжатия использовать широкий спектр алгоритмов сжатия.
    • Deflate - Сжатие без потерь. Хорошо сжимает области с резки контурами, и равномерными областями. Может вызвать проблемы с просмотром в старых программах.
    • LZW - Сжатие без потерь. Сжимает изображение благодаря выделению одинаковых кусочков (pattern) и заменой их более короткими кодами. Проблем при просмотре не наблюдается, разве что у самых древних программ.
    • RLE - Сжатие без потерь. Самый примитивный алгоритм. Заменяет последовательность одинаковых байтов по принципу XXXXX на 5X
    • JPEG - Сжатие с потерями. Удаляется информация, которая глазом не воспринимается (в общем случае), при большом коэффициенте сжатия заметна блочная структура 8x8 пикселей и "мусор" вокруг четких границ. Поддерживается сжатие "серых" (256 оттенков серого) изображений. Файлы TIF с JPEG компрессией, могут вызвать проблемы при просмотре в старых программах.
    • ZIP - Сжатие без потерь. Используется обычная компрессия ZIP. Могут быть проблемы при просмотре во многих программах (кроме Adobe Photoshop, ACDSee)
    • Packbits - Сжатие без потерь. Подходит для сжатия черно-белых (black\white) изображений. Основан на RLE
    • CCIT 3&4 — алгоритм использующийся в факсовых аппаратах (имеет выигрыш в 2 раза по сравнению с черно-белым PNG)
    • Calcs - Экзотика. Лучше не использовать.
    • Uncopressed, RAW - Без сжатия вообще. Файл гигантских размеров. В общем случае больше чем BMP
  6. PDF - векторно-растровый формат. Описание займет не один десяток страниц. Переплевывает все выше сказанное, но нужен опыт и понимание :)

Это то что касаемо формата файла. Но есть еще один немаловажный фактор - размер в пикселах(точках). Файл в 10000 точек по какой-либо стороне - явно неудачный выбор для просмотра на мониторе. Поэтому есть смысл (если файл не предназначен для печати), уменьшить его до человекочитабельных размеров.

Учтите! Файлы с индексированой палитрой (gif, в поределенных случаях tif, png) либо не будут уменьшаться (правильный подход приложения к ресемплингу таких файлов), либо будут выглядеть ужасно. Для того чтобы этого избежать, надо индексированную палитру перевести в нормальную (RGB), сделать уменьшение, по необходимости вернуть индексированый цвет (будте внимательны! В результате проведенной интерполяции появятся новые оттенки вокруг четких контуров. Учтите это для выделения количества цветов)

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

  1. Bicubic - бикубическая интерполяция. Самая медленная, самая ресурсоемкая, но самая качественная на данный момент. Дает некоторое размыливание изображения если уменьшать размер в порядки. Для использования на больших файлах, должно быть много памяти и терпения.
    • bicubic smoofer - тоже самое, но с более "размытым" результатом. Придает "мягкость" изображению.
    • bicubic sharper - тоже самое, но с акцентом на усиление резкости границ. Побочный эффект - возникновение ореола вокруг усиленных границ.
  2. Bilinear - билинейная. Быстрее чем бикубическая, и кроме изрядного "замыливания" вносит небольшие искажения в изображения. Не столь требовательна к ресурсам компьютера.
  3. Nearest neighborhood - Интерполяция по "ближайшему соседу". Самая примитивная, и самая деструктивная, в отношении изображения, интерполяция.

Есть еще много алгоритмов, такие как lancroz, b-spline, но они менее распространены и выигрыш их использования, видимо, зависит от характеристики самого изображения.

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

(8 comments | Leave a comment)

Comments
 
From:[info]zhu
Date:February 8th, 2008 - 01:31 pm
(Link)
jpeg не панацея, но путь наименьшего сопротивления и наиболее простое решение, почти что универсальное для обычного тупого юзера.
но статья очень хорошая, лаконичная и своевременная. только лучше бы для тупых чуть почетче расписать области применения разных форматов. чуть подробнее с примерами. плюс кратенький обзор софта для работы с изображениями. простого и бесплатного софта на несколько практиических задач.
то есть, писать для чуть более тупых.
[User Picture]
From:[info]d_e_s_
Date:February 8th, 2008 - 01:37 pm
(Link)
=) ну делая поправку на то что я писал заметку для своей конторы, картинки у нас вполне специфичные (карты, разрезы, сейсмограммы), то и все это применительно к ним. Конечно для среднестатистического домашнего пользователя требуется правка под его особенности.

Про софт также, у нас есть стандартный выбор бесплатного софта на каждо рабочем месте от gimpa, до faststone viewer. Поэтому все применительно к тому парку ПО, что есть в конторе.
From:[info]zhu
Date:February 8th, 2008 - 01:42 pm
(Link)
понятно.
чуть доработать - и совершенно прекрасная статья для всяких разных чайников полчится.
From:[info]zhu
Date:February 8th, 2008 - 01:44 pm
(Link)
с другой стороны,
если подобные статьи приходится для сотрудников конторы, занимающейся картами и сейсмограммами писать - это беда.
[User Picture]
From:[info]d_e_s_
Date:February 8th, 2008 - 01:48 pm
(Link)
ну вот так. Просто часто надо передать куда нибудь карту и еще что. В родном формате никто не прочтет. А растре любой может открыть. Но все тупо сохраняли в jpeg и потом плевались. Сейчас будут знать, что для чего. Надеюсь :)
From:[info]zhu
Date:February 8th, 2008 - 01:59 pm
(Link)
печально, что одного неудачного опыта переформатирования в jpeg оказалось недостаточно для понимания, и приходится писать статью.
а можно вообще написать свод 3-4 правил для совсем тупых. без объяснений, просто, если такое - то как, а такое - этак. и всё. пусть пользуются. тупую шпаргалку.
иногда так объясняешь человеку, объясняешь.. а потом озарение - нах тут метать бисер перед свиньями :)
[User Picture]
From:[info]d_e_s_
Date:February 8th, 2008 - 02:02 pm
(Link)
Вот именно поэтому и решили сделать локальную wiki, где собраны все вопросы и советы.. а-ля как сменить пароль, как открыть то, как сделать это.. ибо по десять раз на дню объяснять надоело :)

p.s. 3-4 правила это нереально оптимистичный вариант, на практике можно по нолю приписать к этим цифрам.
From:[info]zhu
Date:February 8th, 2008 - 02:41 pm
(Link)
прекрасное решение насчет локальной wiki.
3-4 правила только для форматов графических файлов. в каком формате сохранять будем. про сжатие отдельно.
а вообще ужос.
Powered by LJ.Rossia.org