Файл после обработки стал тяжелее
Рост объясняется одним из четырёх механизмов, и три из них ожидаемы. Перекодирование уже плотно упакованного скана всегда даёт прибавку — на этот случай стоит защита, возвращающая исходные байты. Линеаризация добавляет служебные таблицы и растит файл сознательно. Пересборка документа тянет за собой копии объектов. Смена формата картинки может стоить дороже исходной.
Коротко о цифрах
- Защита сжатия
- результат не меньше исходника — возвращаются исходные байты, уменьшение ноль
- Линеаризация
- добавляет служебные таблицы, рост заявлен и показан двумя числами
- Пересборка страниц
- внутренние переходы тянут копии целевых страниц в новый документ
- Один вызов копирования на выборку
- постраничное копирование раздувало 30-страничный файл с 83 КБ до 2,2 МБ
- Сжатие изображений
- качество подбирается в диапазоне 25–95, не более семи кодирований
Четыре механизма роста
- Перекодирование. Чёрно-белый скан, упакованный факсимильным или двухцветным методом, весит десятки килобайт на страницу. Перевод его в фотографический формат — это переход от двух цветов к миллионам, и результат тяжелее всегда.
- Линеаризация. Файл переписывается так, чтобы просмотрщик начинал показывать первую страницу, не скачав документ целиком. Для этого добавляются служебные таблицы и переносится начало документа: данных становится больше, а не меньше.
- Пересборка из копий страниц. Внутренние переходы тянут за собой копии целевых страниц, и новый документ несёт объекты, которых в нём не видно.
- Смена формата изображения. Снимок экрана с плоскими цветами в фотографическом формате весит больше, чем в формате без потерь: у них разные сильные стороны.
- Повторное сохранение поверх сжатого. Каждый проход перекодирования добавляет искажения и почти ничего не отнимает у размера.
Где стоит защита, а где рост заявлен
У сжатия защита есть. Если после всех преобразований результат оказался не меньше исходника, вам возвращаются исходные байты нетронутыми, а рядом появляется сообщение, что файл уже оптимизирован и при выбранном качестве вышел бы больше. Уменьшение при этом честно показывается нулевым — приписывать себе несуществующий выигрыш инструмент не станет.
У оптимизации защиты нет и быть не должно: рост здесь и есть смысл операции. Вы платите несколькими процентами размера за то, что первая страница у получателя открывается раньше, не дожидаясь всего файла. Поэтому рядом с результатом показываются оба числа — до и после — и подпись, объясняющая, откуда взялась прибавка. Если файл уже был подготовлен таким образом, вам скажут и об этом.
Что выбрать, чтобы файл действительно уменьшился
- Разделите вес документа на число страниц. Меньше сотни килобайт на страницу — документ текстовый, и растеризация ему почти ничего не даст.
- Для текстового документа берите оптимизацию структуры или удаление ненужных страниц.
- Для цветных сканов и фотографий берите сжатие: там выигрыш максимальный, а терять нечего.
- Чёрно-белые сканы, упакованные факсимильным методом, не трогайте вовсе — любое перекодирование сделает их тяжелее.
- Изображения со сплошными заливками и текстом храните в формате без потерь, фотографии — в фотографическом.
- Прочитайте сообщение после обработки: там прямо написано, был ли выигрыш и почему его не было.
Частые вопросы
Инструмент написал, что файл уже оптимизирован. Он вообще что-то делал?
Делал: страницы были перерисованы и упакованы заново, но итог оказался не меньше исходника. В таком случае вам отдают оригинал без изменений, потому что отдать результат тяжелее входного файла было бы бессмысленно.
Почему оптимизация увеличила файл, если она называется оптимизацией?
Оптимизируется скорость показа, а не размер. В файл добавляются служебные таблицы, позволяющие открыть первую страницу до полной загрузки документа, и они занимают место — обычно единицы процентов от исходного веса.
Скан вырос после сжатия в несколько раз. Что произошло?
Он был упакован двухцветным методом, рассчитанным на чёрное и белое, а сжатие перевело его в фотографический формат с миллионами оттенков. Такому скану сжатие противопоказано: он уже занимает минимум возможного.
Как понять заранее, даст ли сжатие выигрыш?
Посчитайте вес одной страницы. Больше мегабайта — почти наверняка фотографии или цветные сканы, и выигрыш будет большим. Меньше сотни килобайт — документ текстовый, и растеризация в лучшем случае не изменит ничего.