Уменьшение размера фотографийПосле того, как оцифрованы фотографии в формате JPEG, возникает необходимость оптимизировать их размер. Точнее, размер jpeg-файла с фотографией. Это нужно и для того, чтобы папка с фото занимала меньше места на диске (физическом или облачном), и для более быстрой передачи фото по интернету, и для увеличения скорости обмена фото между гаджетами и т.п. При этом главным критерием такой оптимизации является отсутствие визуального ухудшения качества изображения. Конечно, при увеличении изображений (оригинала и оптимизированного) разница рано или поздно всё равно обнаружится, задача оптимизатора в этом случае – отодвинуть границу заметности в сторону более значительного увеличения.
 
Обычно используются 2 способа уменьшения размера фотографий:
• повторное пережатие с уменьшением разрешения фото, потери качества значительны;
• повторная перепаковка фото, качество не ухудшается, но эта операция для большого количества фотографий занимает много процессорного времени.
 
Тем не менее, есть программы, которые обеспечивают сжатие в разы, при этом качество фотографии визуально не деградирует хотя бы при 200%-м увеличении. Опишем одну из них, дающую очень неплохие результаты по уменьшению размера фото файла.
 

RIOT (Radical Image Optimization Tool) для уменьшения размера фотографий

 
Дословно RIOT – инструмент для радикальной оптимизации изображений. Программа бесплатная и её можно установить как приложение или как плагин.
 
Основные функции:
• Сохраняет и оптимизирует JPEG, GIF и PNG файлы, используя простой, понятный пользовательский интерфейс.
• Работает с двойным окном (оригинал / оптимизированное изображение) или одинарным (оптимизированное изображение). Автоматический предварительный просмотр оптимизированного изображения.
• Сжимает файлы до нужного порога размера.
• Поддерживается пакетная оптимизация (обработка нескольких файлов одновременно).
• Даёт возможность сохранить или удалить метаданные (комментарии, IPTC, Adobe XMP, профили EXIF, профили ICC).
• Передаёт метаданные между файлами разных поддерживаемых форматов изображения.
• Общие инструменты: панорамирование и масштабирование, поворота, отражение.
• Основные настройки изображения: яркость, контрастность, гамма, негатив.
• Зрительно уменьшает количество уникальных цветов для PNG и GIF изображений, чтобы уменьшить размер файла (доступны два способа квантования: Xiaolin Wu и NeuQuant).
• Изменяет размер изображения с помощью хорошо известных ресемплирующих фильтров (например, Lanczos3, Catmull-Rom бикубического и др.)
• Сжатие в результате сравнимо с коммерческими продуктами, а иногда и лучше.
• Адаптивный алгоритм тональной компрессии (Drago), используемый для HDR изображений.
 
Процесс работы RIOT:
1. Открываем исходное изображение, нажав на кнопку Open…, и выбираем файл.
Также можно открыть путём перетаскивания в окно программы (гораздо удобнее).
2. Выбираем наиболее подходящий формат (JPEG, GIF или PNG).
3. Регулируем (при необходимости) настройки до тех пор, пока оптимизированное изображение (на панели предварительного просмотра изображений справа) не будет выглядеть так как нужно именно вам. Полученный размер файла отображается в верхней части.
4. Сохраняем изображение, нажав на кнопку Save.
Кроме того, доступен пакетный режим, если надо использовать одинаковые настройки для нескольких фото.
 
Настройка JPEG
Поскольку JPEG – наиболее распространённый формат для хранения домашних фотографий, настройки для форматов PNG и GIF мы здесь опустим. Кликаем по кнопке JPEG options внизу окна программы:
 
Настройка JPEG
 
Слайдер качества (Quality) позволяет контролировать степень сжатия JPEG.
Значение 100 означает отсутствие сжатия, соответственно 1 означает максимальное сжатие.
Степень сжатия можно корректировать, претворяя в жизнь выборочный компромисс между размером файла и качество изображения. На примере видно, что отсутствие видимых потерь с одновременным уменьшением размера в 2 раза достигнуто при положении слайдера на 90%.
Разработчик рекомендует использовать значения качества от 65 до 95.
 
Чтобы свести к минимуму потерю цветовой информации, можно также настроить параметры цветовой субдискретизации (Chroma subsampling). Человеческий глаз гораздо более чувствителен к изменениям в яркости, чем в цветности (цветовой информации). Поэтому можно уменьшить цветовое разрешение, пока не будем наблюдать неприемлемые потери общего качества. В выпадающем списке видим следующие значения цветовой субдискретизации:
• None (4:4:4) – субдискретизация отсутствует.
• Low (4:2:2) – цветовое разрешение по горизонтали уменьшено в 2 раза (как в MPEG2).
• Medium (4:2:0) – такое цветовое прореживание уменьшает общую информацию о цветности в 2 раза.
• High (4:1:0) – только четверть информации о цветности сохраняется в горизонтальном направлении по отношению к информации о яркости.
 
Опять же, включаем разные значения и в правом окне отслеживаем изменения размера оптимизированного файла и качество фото. Для попиксельного сравнения используем кнопку сравнения на месте (In-place compare). Нажимаем и держим её – в левом окне исходник заменяется на результат. Отпускаем – исходник возвращается. Очень наглядная операция, чтобы увидеть, что в каком месте изменилось.
 
RIOT предлагает два режима кодирования – стандартное оптимизированное и прогрессивное. Стандартное оптимизированное кодирования даёт на выходе стандартный JPEG (baseline), включающий оптимизированные таблицы Хаффмана. Эти таблицы создаются после статистического анализа содержимого конкретного изображения. Такой режим обеспечивает половину скорости прогрессивного режима с аналогичным сжатием.
 
Прогрессивное кодирование обычно даёт изображения меньшего размера. «Прогрессивное» изображение собирается в фокус в процессе отображения на экране. Т.е. не построчно выкладывается сверху донизу, как в стандартном режиме, а вначале прорисовывается полностью как бы нечётко, лишь потом обретая резкость. Возникает иллюзия, что страница загружается гораздо быстрее, хотя достижение окончательной резкости занимает столько же времени. Прогрессивный JPEG создаётся в несколько проходов (сканирований изображения).
 
Таким образом можно заключить, что нужно использовать прогрессивное кодирование. Что касается просмотра фото на телевизоре, то надо учесть, что некоторые модели поддерживают только стандартный JPEG. Т.е. надо проверить опытным путём…
 

Пакетное уменьшение размера фотографий

 
Для обработки сразу нескольких изображений можно использовать пакетный оптимизатор.
В пакетном режиме используются те же настройки, что и для одного изображения, в том числе настройки формата, метаданных и настройки изображения.
 
Основной процесс обработки:
1. Сначала загружаем одно фото, пробуем разные настройки RIOT, пока не достигнем нужного результата, а затем открываем Batch оптимизатор и используем те же настройки для всех изображений.
2. Загружаем все фото с помощью выпадающего списка «Add images»:
 
Пакетное уменьшение размера фотографий
 
Удерживайте клавишу Ctrl нажатой, чтобы выбрать более одного изображения одновременно или же добавляйте целые папки и подпапки.
3. Если вы хотите использовать дополнительные задачи, такие как изменение размера, поворот, зеркальное отражение, сжатие до определённого размера, то их можно выбрать из выпадающего меню с надписью «Additional tasks».
4. Выбираем папку вывода (то есть, где будут содержаться все оптимизированные фотографии), нажав на кнопку с многоточием.
5. Настраиваем параметры пакетной обработки нажатием на кнопку «Settings» вверху справа.
Текущая версия RIOT даёт возможность выбрать следующие опции:
• Перезаписывать существующие файлы (по умолчанию).
• Удалить исходные файлы после завершения (используйте осторожно).
• Сохранить оригинальную дату/время.
• Отчёт об изменения размера файла (отображать или не отображать).
Затем подтверждаем их кнопкой «Apply».
6. Нажимаем кнопку «Start», удобно откидываемся в кресле и расслабляемся, пока все фотографии не будут обработаны.

 
Инструмент Resample
Очень распространенная задача при оптимизации изображения – уменьшить размер изображения в пикселях. При этом опять же не допустить заметного ухудшения качества.
 
Изменение размера осуществляется с помощью так называемых «ресемплинг-фильтров» или интерполяцияонных фильтров, которые определяют, какие пиксели должны быть добавлены в случае увеличения или какие должны быть удалены в случае уменьшения размера.
 
Не имеет никакого смысла в использовании большого изображения, если оно показывается на экране меньшего размера. Например, при просмотре фотографий размером 4К на экране телевизора 1920х1080 или фоторамки 720х480. Поэтому даже лучше изменить размеры фото с помощью специализированных алгоритмов, чтобы обеспечить неизменное качество изображения. В большинстве случаев гаджет не обеспечит такой оптимальный ресемплинг, как RIOT. Более того, на ресемплинг больших фотографий телевизор, фоторамка и т.п. будут тратить дополнительное время.
 
Следовательно, используя ресемплинг RIOT, вы получите:
• Меньший размер файла.
• Высокое качество изображения.
• Быстрое время отклика от программ-браузеров или устройств.
 
Интерполирующие фильтры для ресемплинга, имеющиеся в RIOT
1. Box фильтр. Является самым простым и быстрым: он вычисляет новые пиксели на основе значения ближайшего пикселя в исходном изображении. Это приводит к появлению «квадратов» при увеличении и зернистости при уменьшении размера. Лучше всего работает с фото, не содержащими наклонных линий.
 
2. Bilinear. Быстрый фильтр, с пониженным качеством. Который рассматривает ближайшие области размером 2×2, окружающие неизвестный пиксель. Затем берёт средневзвешенное значение. Это приводит к более плавным линиям изображений. Рекомендуется как быстрая альтернатива в другим фильтрах при изменении размера искусственных изображений, таких как текстуры или градиенты.
 
3. Семейство фильтров Cubic. Бикубическая интерполяция рассматривает уже области размером 4х4, т.е. в общей сложности 16 пикселей. Даёт заметно более чёткие изображения, чем предыдущие два метода и, возможно, идеальное сочетание времени обработки и качества оптимизированной фотографии. По этой причине они являются стандартом во многих программах редактирования изображений (в том числе Adobe Photoshop). В RIOT имеются следующие бикубические фильтры:
• Mitchell/Netravali.
• Catmull-Rom (лучший среди бикубических).
• B-Spline 4-го порядка.
 
4. Lanczos3. Наиболее подходящий и обеспечивающий наилучший результат фильтр для фотоизображений без резких переходов. Фильтр медленнее бикубических примерно в 3 раза. Он наиболее чёткий, но и может подчеркнуть артефакты JPEG.
 
Теперь, когда всё известно о том, как быстро и без потерь качества уменьшить размер фотографии, можно приступить к оптимизации своей фото-библиотеки и заметно увеличить скорость обмена сжатыми фотографиями как в сети, так и между устройствами.
Удачной оптимизации!

Автор: Алексей Касьянов.