Уменьшение веса картинок

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Уменьшение веса картинок — операция по сокращению размера (в байтах) картинки за счет уменьшения количества цветов, устранения ненужной информации, обрезания гистограммы и выбора оптимального алгоритма сжатия.

Сжатие с потерями (JPEG)[править]

Различают алгоритмы сжатия с потерями и без потерь: сжатие с потерями применяется для хранения фотографий и кинофильмов. Распространенный формат сжатия с потерями — JPEG. При сжатии в этот формат получается мощная упаковка (тем более мощная, чем меньшее качество от 1 до 100 % было выставлено в настройках). Однако, на картинках, упакованных в этот формат, наблюдаются артефакты сжатия JPEG — области 8×8 пикселей, которые окружают различные резкие переходы, образуя, своего рода, зазубрины или ступеньки. Это связано с тем, что алгоритм JPEG жмет изображения квадратиками 8×8, при этом математически преобразуя и усредняя цвета (предельным случаем сжатия в этот формат с качеством 1 % оказывается графика а ля ZX-Spectrum, где каждый квадрат 8×8 пикселей представлен всего лишь двумя различными цветами).

Не рекомендуется последовательно сохранять несколько раз одно и то же изображение в формат JPEG — при этом артефакты сжатия нарастают, для промежуточных сохранений лучше использовать форматы сжатия без потерь. Существуют функции для вращения или кадрирования JPEG без переупаковки и без дополнительных потерь (например, в IrfanView они называются «JPG loseless rotation» и «JPG loseless crop».

Сжатие без потерь (PNG, GIF)[править]

Если в изображении преобладают резкие переходы, например, если речь идет о скриншотах программного обеспечения, диаграммах, графиках, текстах, тонких линиях, где артефакты JPEG будут смотреться некрасиво и повредят изображение, используют форматы сжатия без потерь, такие как PNG и GIF. Ограничением более старого формата GIF является возможность представить лишь 256 различных цветов.

Обрезание гистограммы[править]

 → Устранение фона бумаги

На книжных сканах значительную часть изображения занимает бумага, которую можно «отбелить» (заменить «почти белые» пиксели на полностью белые) для получения более разборчивых и, к тому же, более компактных изображений страниц.

Кадрирование изображения[править]

Изображение, которое содержит избыточные поля (например, на книжных сканах это могут быть поля книги и пространство за ними) могут занимать чуть ли не более половины «веса» страницы. Функция обрезания таких полей в графических редакторах называется «Crop» или «Кадрирование». Например, в IrfanView она активизируется по нажатию клавиш Ctrl-Y. Автоматически откадрировать книжные сканы в большом количестве (и заодно их развернуть на требуемый угол и порезать на две странички) можно, например, бесплатной программой Scan Tailor.

Масштабирование[править]

Исходное и упакованное в JPEG движком MediaWiki изображение туманности с двухкратным увеличением.

Движок MediaWiki умеет автоматически масштабировать изображения — уменьшать количество пикселей по горизонтали и по вертикали. Проблемы могут возникнуть из-за дополнительной переупаковки JPEG с неизвестным науке уровнем сжатия, а также с увеличением, а не уменьшением веса картинок, сжатых без потерь (иногда наблюдается для PNG и анимированных GIF). Поэтому в некоторых случаях уменьшенные версии изображения имеет смысл сгенерировать самостоятельно, и прописывать число пикселей по ширине в явном виде, чтобы именно так, без автомасштабирования, они и отображались.

Убирание цветности[править]

Если изображение состоит из оттенков серого, то при его сохранении имеет смысл указать параметр grayscale (например, пункт меню Image — Convert to grayscale в IrfanView, Изображение-Режим-Градации серого в GIMP и т. п.)

Например, для показанного ниже графика изображения в 16 миллионов цветов (41425 байт)[1] и 256 оттенков серого (19316 байт) [2] оказались неотличимы, поскольку информация о цвете не используется.

Сохранение в 16 цветов[править]

Монохромные рисунки и графики, имеющие не более 16 цветов, имеет смысл сохранить в 16 цветов — тогда каждая точка будет занимать не более 4 бит на диске (при 256 цветах — 8 бит или 1 байт). Если это делать из IrfanView, то белый цвет почему-то становится слегка серым (имеет уровень 253 вместо положенного 255). Программы Color quantizer и Adobe Photoshop при сохранении «для Web» отображают белый цвет правильно.

В последних версиях IrfanView, впрочем, появилась опция более правильного трансформирования цветов.
Irfan BestColorQuality.png

16 оттенков серого, 9426 байт, при сохранении из IrfanView. Белый цвет имеет уровень не 255, а 253.
16 оттенков серого, 10620 байт, при сохранении из Color quantizer. Белый цвет имеет правильный уровень 255.

Сохранение в 2 цвета[править]

Это самый компактный режим сохранения картинок (используется лишь 1 бит на пиксель), но его использование сопряжено с потерей значительного объема информации и порой некрасивому представлению даже изначально монохромных изображений. При масштабировании монохромного изображения, например, в Word, количество цветов сохраняется, и все наклонные линии превращаются в зигзагообразные ступеньки, а надписи делаются неразборчивыми. Бинаризацию серых пикселей можно произвести либо в черную, либо в белую область — точную настройку границы перехода позволяет осуществить, например, функция «Порог» в GIMP (Меню Цвет — Порог, работает только при включенном режиме Изображение — Режим — RGB или Изображение — Режим — Градации серого).

2 цвета, 2531 байт (из IrfanView)
2 цвета, 4743 байт (из GIMP, функция «Порог»)

При оцифровке книжных сканов 2-цветный режим нежелателен, но иногда используется, например, в программе Scan Tailor из-за своей компактности, после перевода изображения в режим 600 DPI, где искажения типа «ступеньки» малозаметны. При желании его там можно отключить для отдельных страниц или их частей, а также для всех страниц книги целиком.

DPI[править]

Параметр DPI (число пикселей на дюйм — dots per inch) хранится в свойствах изображения и ни на что не влияет, пока мы не начинаем изготавливать документы PDF из Word — там он резко портит качество картинок, если указан меньше, чем нужно. Фотошоп при сохранении «для Web» или Color quantizer выполняют очистку этого параметра, что решает проблему. В IrfanView его можно очистить вручную.

Источники[править]