Що таке файл 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 є фрагмент, який складається з:
Поле | Опис |
---|---|
Chunk FourCC: 32 біти | Чотирисимвольний код ASCII, що використовується для ідентифікації фрагмента |
Розмір фрагмента: 32 біти (uint32) | Розмір фрагмента, не враховуючи це поле, ідентифікатор фрагмента чи заповнення |
Chunk Payload: Chunk Size bytes | Корисне навантаження даних. Якщо розмір фрагмента непарний, додається один байт заповнення ~-~-, який має бути 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 Data Format and Decoding Guide ілюструє специфікації формату бітового потоку VP8.
Формат файлу без втрат
Цей макет використовується, коли зображення базується на кодуванні без втрат і немає потреби в розширених функціях зовнішнього формату. Однак старі програми можуть не читати такі файли.
У цьому випадку файл WebP складається з:
- 12-байтовий заголовок файлу WebP
- Чанк VP8L