r   e   k   l   a   m   a
r   e   k   l   a   m   a

Kto przygarnie format grafiki o dwukrotnie lepszej kompresji niż JPEG i bez artefaktów?

Strona główna AktualnościOPROGRAMOWANIE

Dobrze zapewne znany niektórym naszym Czytelnikom programista Fabrice Bellard (autor między innymi bibliotek ffmpeg i hiperwizora qemu) przedstawił szerszej publiczności BPG – format graficzny, mający być następcą popularnego JPEG-a. Jego możliwości robią wrażenie. Przy mniej więcej tej samej jakości pliki BPG są o połowę mniejsze od tych z rozszerzeniem JPG.

Nowych formatów grafiki od czasów wydania JPEG-a pojawiło wiele (na czele z uwolnionym przez Google kilka lat temu formatem WebP), ale nie odniosły znaczącego sukcesu. Problemem jest w tym wypadku zawsze to samo. Anglicy używają tu wyrażenia to pull oneself up by one's bootstraps, co dosłownie znaczy – wyciągnąć się za pomocą pętli z tyłu butów, a w przenośni – zadania niemożliwego do wykonania. Z formatów graficznych korzystamy raczej nie dla ich samych, lecz by przekazać obraz innym. Odbiorcy grafiki muszą mieć możliwość jej obejrzenia, więc w interesie nadawcy jest skorzystanie z klasycznych, popularnych formatów. Nikt więc nie korzysta z formatów niepopularnych, a co za tym idzie, nikt specjalnie nie chce pracować nad formatami niepopularnymi. I tak oto, mimo zalet technicznych WebP, wciąż korzystamy przede wszystkim z JPEG i PNG, wyświetlanymi przez wszystkie przeglądarki.

Bellard nie ma takich możliwości jak Google, by wprowadzić obsługę nowego formatu graficznego do swojej ogromnie popularnej przeglądarki, zrobił jednak coś innego. Oprócz biblioteki libbpg, pozwalającej na łatwą implementację BPG w oprogramowaniu graficznym, przygotował także mierzący ok. 200 KB dekoder w JavaScripcie (po kompresji ok. 70 KB), który można osadzić na każdej stronie internetowej, by wyświetlać obrazki BPG w każdej już istniejącej przeglądarce.

r   e   k   l   a   m   a

Efekty możecie zobaczyć na demonstracyjnej stronie, przedstawiającej słynne zdjęcie Leny, w różnych stopniach kompresji BPG, zestawione ze zdjęciami JPG (użyto najlepszego obecnie enkodera Mozilli, mozjpeg, oraz kompresora jpegcrush). Różnice są dramatyczne, szczególnie przy najwyższym poziomie kompresji. Niespełna sześciokilobajtowa Lena w JPG to paskudna mozaika, artefakt na artefakcie, podczas gdy Lena tych samych rozmiarów w BPG wygląda całkiem przyzwoicie - dochodzi jedynie do niewielkich przebarwień.

BPG bazuje na algorytmach kompresji stosowanych w standardzie wideo HEVC, zapewnia obsługę tych samych przestrzeni barw co JPEG (dzięki czemu w zasadzie nie ma problemów z kompresją) – i co bardzo istotne dla miłośników fotografii HDR, wspiera głębię koloru do 14 bitów na kanał. Co szczególnie ciekawe, może też zastąpić w wielu wypadkach bezstratny format PNG, gdyż obsługuje przezroczystości (kanał alfa).

Nowy format może mieć znaczenie przede wszystkim dla użytkowników mobilnych. Rosnąca popularność ekranów UltraHD/Retina na smartfonach i tabletach doprowadziła do sytuacji, w której nie dziwią mobilne witryny z samymi zdjęciami „ważącymi” kilka megabajtów. Nie każdy ma zaś w środku modem LTE i nieograniczony pakiet transmisji danych. Efektywne zmniejszenie rozmiaru danych o połowę to efekt bez precedensu, biorąc pod uwagę, że Mozilla chwali się optymalizacjami na poziomie 5-10%.

Możliwości BPG możecie sprawdzić sami – na stronie autora znajduje się kod źródłowy narzędzi konsolowych dla Linuksa, biblioteka i dekoder w JavaScripcie, a także kompilacja wspomnianych narzędzi dla Windows. Naszym zdaniem to świetny format, bijący na głowę zarówno stare JPG jak i google'owe WebP. Możemy mieć tylko nadzieję, że zainteresują się nim twórcy edytorów graficznych i przeglądarek.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.