desтруктивный журнал - Post a comment
( Read Comments )
TimeText
03:24 pm

[info]d_e_s_

[Link]

Написал статейку в локальную 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). Но они очень ресурсоемки, но и качество выше в разы.

Reply:
 
From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs IP addresses of anonymous posters.
Powered by LJ.Rossia.org