Формат WebP
WebP — это контейнер RIFF, внутри которого лежит один из двух разных кодеков: VP8 сжимает с потерями, как видеокадр, а VP8L — без потерь, отдельным алгоритмом с предсказанием и локальными палитрами. Прозрачность работает в обоих режимах, анимация тоже поддерживается. Сторона картинки не может превышать 16 383 пикселя. В PDF-документе места для WebP нет: там просто не существует фильтра, который умел бы его читать.
Коротко о цифрах
- Контейнер
- RIFF; кодеки VP8 (с потерями) и VP8L (без потерь)
- Прозрачность
- поддерживается в обоих режимах, отдельным чанком ALPH
- Предел размера
- 16 383 пикселя по каждой стороне
- Фильтр в PDF
- отсутствует — файл приходится перекодировать в PNG
- У нас на выходе
- компрессор изображений пишет WebP и JPEG, больше ничего
Два режима под одним расширением
Файлы с одинаковым расширением .webp внутри устроены по-разному. Режим с потерями заимствован у видеокодека VP8: кадр делится на макроблоки, каждый предсказывается по соседям, а разница кодируется грубее — примерно так же, как это делает JPEG, только с более умным предсказанием и без жёсткой сетки 8×8. На фотографии это даёт заметно меньший вес при том же визуальном качестве.
Режим без потерь — совсем другой алгоритм: он подбирает для участков картинки локальные цветовые палитры, предсказывает пиксель по нескольким соседям сразу и дожимает результат энтропийным кодированием. Для скриншотов и графики он обычно обходит PNG. Понять, какой режим внутри вашего файла, по расширению нельзя — только по содержимому.
Что происходит при вставке в PDF
- В спецификации PDF нет фильтра для VP8 и VP8L, поэтому положить файл в документ потоком, как JPEG или PNG, невозможно.
- Наш конвертер поступает единственным доступным способом: браузер декодирует WebP, картинка рисуется на канвасе и кодируется в PNG с качеством 1.0.
- Для WebP без потерь это честный размен — пиксели те же, просто упаковка другая.
- Для WebP с потерями это рост: фотография в 300 КБ, ставшая PNG, легко превращается в несколько мегабайт, потому что PNG обязан записать в том числе и артефакты сжатия.
- Хотите компактный PDF из WebP-фотографий — сначала пересохраните их в JPEG нашим компрессором изображений, а уже потом собирайте документ.
Где WebP поддержан у нас
- Сжатие изображений принимает WebP на вход и умеет отдавать WebP на выходе — это один из двух форматов, в которые компрессор вообще пишет.
- Обрезка изображений тоже принимает WebP: рамка выделения строится по развёрнутой копии картинки, а не по сырым пикселям файла.
- Сборка PDF принимает WebP, но кладёт его в документ уже как PNG — см. предыдущий раздел.
- Если браузер не умеет кодировать WebP на канвасе, инструмент не отдаёт молча PNG под чужим расширением, а отказывается: canvas.toBlob при неизвестном типе подсовывает PNG, и мы сверяем полученный MIME-тип с запрошенным.
Частые вопросы
Почему PDF из WebP-снимков получился в разы тяжелее исходных файлов?
Потому что в документ ушёл не WebP, а PNG без потерь: фильтра для WebP в PDF не существует. Пересохраните снимки в JPEG перед сборкой, и вес вернётся к ожидаемому.
Чем открыть файл .webp на компьютере?
Любым современным браузером: перетащите файл в окно. Windows и macOS показывают WebP штатно уже несколько лет. Для редактирования проще пересохранить картинку в JPEG или PNG.
WebP правда легче JPEG?
На фотографиях при равном визуальном качестве обычно да, примерно на четверть. Но выигрыш зависит от снимка: на мелкой контрастной графике разница почти исчезает, а иногда JPEG оказывается компактнее.
Сохранится ли прозрачность, если сжать WebP в JPEG?
Нет. JPEG не хранит альфа-канал, поэтому перед кодированием под картинку подкладывается белый фон. Хотите сохранить прозрачность — выбирайте на выходе WebP, а не JPEG.