Перейти к содержимому
pdftools.kz
Конвертация

Формат GIF

GIF хранит не цвета пикселей, а номера в палитре, и мест в этой палитре ровно 256. Изображение сжимается без потерь алгоритмом LZW, но сама палитра — это уже потеря: фотография перед сохранением приводится к двум с половиной сотням оттенков и покрывается характерной рябью. Прозрачность в формате есть, но однобитная: пиксель либо виден целиком, либо не виден вовсе, полутонов между ними не бывает.

Локально в браузередо 100 МБбез регистрации

Коротко о цифрах

Палитра
не более 256 цветов, то есть 8 бит на пиксель
Сжатие
LZW, без потерь — но приведение к палитре потери уже внесло
Прозрачность
один бит: пиксель либо виден, либо нет, полутонов нет
Анимация в PDF
не переносится: на страницу попадает один кадр
У нас
принимается при сборке PDF, в документ уходит как PNG

Палитра и почему на фотографиях она видна

Полноцветное изображение содержит миллионы оттенков. Сохраняя его в GIF, программа выбирает 256 наиболее подходящих и заменяет каждый пиксель ближайшим из выбранных. Плавный градиент неба при этом распадается на видимые полосы. Чтобы их скрыть, кодировщик подмешивает дизеринг — шахматный узор из двух соседних цветов, который издали читается как промежуточный оттенок, а вблизи выглядит как зернистость.

Зато на плоской графике формат ведёт себя отлично: логотип, схема, пиксельная иконка обходятся десятком цветов, и LZW сжимает такие данные очень плотно. Именно поэтому GIF пережил тридцать лет — не как формат фотографий, а как формат простых картинок и коротких зацикленных роликов.

Анимация и один кадр в PDF

  • Анимированный GIF — это последовательность кадров с задержками и правилами наложения друг на друга, всё в одном файле.
  • PDF — формат неподвижных страниц: положить туда движущуюся картинку нельзя в принципе.
  • Наш конвертер рисует изображение на канвасе, а канвас забирает один кадр — тот, что отображается в момент отрисовки. У только что загруженного файла это первый кадр.
  • Поэтому анимация из десяти кадров превращается в одну страницу, а не в десять. Нужны все кадры — разложите ролик на отдельные картинки любым покадровым конвертером и загрузите их как обычные изображения.

Прозрачность в один бит

В палитре GIF один индекс можно объявить прозрачным. Никакой промежуточной прозрачности это не даёт: пиксель либо полностью прозрачен, либо полностью непрозрачен. На косой линии или скруглённом углу такая маска даёт рваный, ступенчатый край — его невозможно сгладить, потому что сглаживание требует полупрозрачных пикселей.

При переносе в PDF мы пересобираем картинку в PNG, и однобитная маска переносится честно: как была рваной, такой и останется. Если нужен аккуратный логотип с мягкими краями поверх страницы, исходник должен быть в PNG или WebP с полноценным альфа-каналом — переделать GIF задним числом нельзя, данных о полутонах в нём просто нет.

Частые вопросы

Почему из анимированного GIF получилась одна неподвижная страница?

PDF не умеет хранить анимацию, там есть только неподвижные страницы. Конвертер берёт кадр, отрисованный на канвасе, — для только что загруженного файла это первый кадр ролика.

Как сделать PDF из всех кадров анимации?

Разберите ролик на отдельные картинки покадровым конвертером, сохраните их в PNG и загрузите как обычный набор изображений. Порядок страниц потом задаётся перетаскиванием миниатюр.

Почему фотография в GIF выглядит зернистой?

Она приведена к палитре из 256 цветов, а недостающие оттенки имитированы дизерингом — шахматным чередованием двух соседних цветов. Вблизи этот узор и читается как зерно.

Края логотипа из GIF получились рваными. Это можно исправить?

Не из самого GIF: его прозрачность однобитная, полутоновых данных на краях в файле нет. Нужен исходник в PNG или WebP с настоящим альфа-каналом, иначе сгладить нечем.

Рядом

Частые задачи с этим инструментом