ІнтернетПрограмування

Новий формат BPG проти JPG

Формат зберігання зображень BPG настільки молодий, що його підтримки ще немає практично ніде. Ані в браузерах, ані в графічних редакторах. Є лише офіційна сторінка — bellard.org/bpg/, де наведено деякі порівняння та утиліти для кодування/декодування, зокрема декодер JavaScript для використання на сайтах.

Багато різних візуальних порівнянь jpg і bpg можна побачити за посиланням xooyoozoo.github.io/yolo-octo-bugfixes, де чітко видно, що за схожого розміру файлу зображення BPG набагато привабливіше та якісніше. За гранично сильного стиснення, коли jpg суцільно вкривається кольоровими квадратами, у BPG ми бачимо плавні градієнти. Спробуємо провести власне тестування з максимальним стисненням, щоб побачити найбільші артефакти обох форматів. Візьмемо всім відоме зображення за зразок:

origСтиснемо його в JPG з максимальним стисненням і побачимо жахливі артефакти. Розмір зображення становив лише 5851 байт:

q36Варто сказати, що BPG може стиснути зображення значно сильніше, ніж до 5851 байта, але заради справедливості виберемо рівень стиснення, який дасть схожий розмір. У мене за рівня стиснення q36 вийшов розмір 5652 байти для BPG. Подивіться, як це виглядає (звісно, у png, оскільки браузер не покаже):

q36І я вас не обманюю! Важко повірити, що BPG може за такого крихітного розміру зберегти інформацію про стільки деталей, кольорів і градієнтів. Але оскільки BPG може більше — продовжимо стискати! Візьмемо стиснення q42, яке дасть іще вдвічі менший розмір (2812 байтів), і подивимося, що можна закодувати в цей крихітний обсяг:

q42Ну й наостанок, щоб нарешті побачити справжні артефакти, зменшимо обсяг іще вдвічі — 1312 байтів:

q48Навіть за такого розміру зображення все ще виглядає привабливіше, ніж JPG учетверо більшого обсягу. Але тут уже стає зрозуміло, наскільки інший принцип використовується: схоже, квадратиків ми не побачимо, а лише якісь градієнти й розмиття. Цікаво, що в деяких місцях кодек намагався зберегти чітку межу переходу (зверніть увагу на плече та дугу дзеркала).

З недоліків на сьогодні:

Кодування зображення звичайної роздільної здатності, наприклад із фотоапарата, займає кілька десятків секунд і відбувається з використанням одного ядра, споживаючи близько 300 МБ оперативної пам’яті й більше (щоправда, за найкращої якості кодування). Декодування такого зображення на льоту за допомогою JavaScript у мене взагалі не вийшло, хоча маленькі декодуються нормально. Але навіть маленьке зображення, наприклад у мобільному браузері, декодується JavaScript кілька секунд.

P.S. Не минуло й двох тижнів, як у мережі нарешті з’явився переглядач — BPG View. Щоправда, у мене під Win7 x64 він не працює, але, можливо, так і задумано, судячи з “win32” у назві файлу. Принаймні під WinXP запрацював без проблем.

P.P.S. Нарешті з’явився функціональніший переглядач — Honeyview 5.08, який, окрім перегляду, уміє ще й конвертувати зображення у формат BPG! Чекаємо, поки підтягнуться браузери.

25.10.2015 Я періодично стежу за новинами про цей формат, тому додам, що нового з’явилося в мережі від часу публікації:

  • Онлайн-сервіс кодування JPG у BPG. Є налаштування всіх важливих параметрів, перегляд і завантаження результату: webencoder.libbpg.org
  • Останній завантажений мною переглядач XnView 2.32 упорався з відображенням bpg-зображень. Щоправда, під час переходу до папки з ними, а також безпосереднього відкриття зображення щоразу миготить чорний прямокутник консольного декодера. Та все ж це вже краще, ніж нічого.
  • З’явилося багато посилань на певний вільний формат FLIF, який близький до BPG або навіть кращий. Офіційний сайт — flif.info

Обговорення 1

  1. Без поддержки в браузерах все равно, имхо, формат дохлый.
    Плюс – сейчас основной пожиратель памяти/процессора – скрипты .

Залишити коментар

Вашу електронну адресу не буде оприлюднено. Обов’язкові поля позначено *