.WEBP вариант №
WebP, представленный Google, представляет собой современный формат файлов растровых веб-изображений, основанный на сжатии без потерь и с потерями. Он обеспечивает такое же качество изображения при значительном уменьшении размера изображения. Поскольку большинство веб-страниц используют изображения в качестве эффективного представления данных, использование изображений WebP на веб-страницах приводит к более быстрой загрузке веб-страниц. По данным Google, изображения WebP без потерь на 26% меньше по размеру по сравнению с PNG, а изображения WebP с потерями на 25-34% меньше, чем сопоставимые изображения JPEG. Изображения сравниваются на основе индекса структурного сходства (SSIM) между WebP и другими форматами файлов изображений. WebP является дочерним проектом формата мультимедийного контейнера WebM.
Обзор функций WebP
Изображения WebP используют процесс сжатия, основанный на прогнозировании пикселей из окружающих их блоков, в результате чего пиксели используются несколько раз в одном файле. Он поддерживает анимированные изображения и, как ожидается, будет поддерживать больше функций в будущем. Google предоставил исходный код онлайн для своего кодировщика и декодера, чтобы его можно было использовать там, где это необходимо. Изображение WebP обеспечивает поддержку:
- Сжатие с потерями: Сжатие с потерями основано на кодировании ключевых кадров VP8. VP8 — это формат сжатия видео, созданный On2 Technologies как преемник форматов VP6 и VP7.
- Сжатие без потерь: Формат сжатия без потерь разработан командой WebP.
- Прозрачность: 8-битный альфа-канал полезен для графических изображений. Альфа-канал можно использовать вместе с RGB с потерями, функция, которая в настоящее время недоступна ни в одном другом формате.
- Анимация: Поддерживаются анимированные изображения в реальном цвете.
- Метаданные: могут содержать метаданные EXIF и XMP (например, используемые камерами).
- Цветовой профиль: Может иметь встроенный профиль ICC.
Сжатие WebP с потерями использует прогнозирующее кодирование для кодирования изображения, тот же метод, который используется видеокодеком VP8 для сжатия ключевых кадров в видео. Кодирование с предсказанием использует значения в соседних блоках пикселей для предсказания значений в блоке, а затем кодирует только разницу.
Сжатие WebP без потерь использует уже просмотренные фрагменты изображения для точного воссоздания новых пикселей. Он также может использовать локальную палитру, если не найдено ничего интересного.
Формат файла
Формат файла WebP основан на формате документа RIFF (формат файла обмена ресурсами). Контейнер WebP обеспечивает поддержку дополнительных функций, а не только одно изображение, закодированное как ключевой кадр VP8. Базовым элементом RIFF-файла является чанк, который состоит из:
Поле | Описание |
---|---|
Чанк FourCC: 32 бита | Четырехсимвольный код ASCII, используемый для идентификации фрагмента |
Размер фрагмента: 32 бита (uint32) | Размер фрагмента, не включая это поле, идентификатор фрагмента или заполнение |
Полезная нагрузка фрагмента: Размер фрагмента в байтах | Полезная нагрузка данных. Если размер фрагмента нечетный, добавляется один байт заполнения ~-~-, который должен быть равен 0 ~-~- |
ChunkHeader (‘ABCD’) | Используется для описания заголовков FourCC и Chunk Size отдельных фрагментов, где ‘ABCD’ — это FourCC для фрагмента. Размер этого элемента составляет 8 байт. |
Заголовок WebP
Заголовок файла WebP выглядит следующим образом:
- Заголовок RIFF — 32 бита, представляющие символы ASCII ‘R’ ‘I’ ‘F’ ‘F’
- Размер файла — 32 бита (uint32), представляющих размер файла в байтах, начиная со смещения 8. Максимальное значение этого поля составляет 2^32 минус 10 байт, и, таким образом, размер всего файла составляет не более 4 ГБ минус 2 байта. .
- «WEBP» — 32 бита, представляющие символы ASCII «W», «E», «B», «P».
Формат файла с потерями
Изображения WebP используют формат файла с потерями, если изображение основано на кодировании с потерями и не требует каких-либо расширенных/расширенных функций, таких как прозрачность, анимация, альфа-канал и т. д. Изображения с потерями меньше по размеру и также поддерживаются более старыми приложениями.
Файл WebP в этом случае состоит из:
- 12-байтовый заголовок файла WebP
- Кусок VP8
Руководство по формату и декодированию данных VP8 иллюстрирует спецификации формата битового потока VP8.
Формат файла без потерь
Этот макет используется, когда изображение основано на кодировании без потерь и нет необходимости в расширенных функциях, предоставляемых внешним форматом. Однако старые приложения могут не иметь возможности читать такие файлы.
Файл WebP в этом случае состоит из:
- 12-байтовый заголовок файла WebP
- Кусок VP8L