Czym jest HEIC i co zachować: HEIC czy JPEG?
Telefon zapisuje pliki .heic, a nic na moim laptopie nie chce ich otworzyć. Co to jest i czy są mi potrzebne?
Co oznacza skrót HEIC
HEIC to zwykle skrót od High Efficiency Image Container. Rozszerzenie .heic oznacza plik obrazu z rodziny HEIF, zawierający zazwyczaj piksele zakodowane kodekiem HEVC. W codziennym użyciu ludzie mówią HEIC, mając na myśli plik zdjęcia z iPhone'a, choć to HEIF jest standardem kontenera, a HEVC zwykle kodekiem kompresji w jego środku.
To rozróżnienie tłumaczy, dlaczego zmiana .heic na .jpg nie konwertuje zdjęcia. Rozszerzenie pliku jest tylko etykietą; oprogramowanie i tak znajdzie w środku strukturę HEIF i dane obrazu skompresowane w HEVC. Prawdziwa konwersja musi zdekodować te piksele i zakodować nowy plik JPEG, PNG lub WebP.
HEIC to kontener, nie kodek
Plik .heic jest plikiem HEIF: High Efficiency Image File Format, ustandaryzowanym jako ISO/IEC 23008-12. HEIF to kontener zbudowany na tej samej bazowej strukturze plików multimedialnych ISO, której używa MP4. Mówi, jak w pliku ułożone są obrazy, miniatury, mapy głębi, sekwencje obrazów i metadane — nie mówi, jak zakodowane są piksele.
W plikach, które produkuje iPhone, piksele są zakodowane kodekiem HEVC, znanym też jako H.265, kodekiem wideo ustandaryzowanym jako ITU-T H.265. To źródło zarówno zalet tego formatu, jak i jego problemów: w praktyce przechowujesz zdjęcie jako pojedynczą klatkę współczesnego kodeka wideo.
Dlaczego telefon go wybrał
HEVC ma narzędzia predykcji wewnątrzklatkowej, których projekt JPEG z 1992 roku nie ma, więc przy tej samej jakości wizualnej potrzebuje na ogół mniej bitów. Pamięć w telefonie jest skończona, a biblioteki zdjęć nie, więc oszczędność jest dla producenta urządzenia warta realnych pieniędzy. Kontener pozwala też jednemu plikowi pomieścić kilka powiązanych obrazów — klatki serii, zdjęcie i krótki klip Live Photo, kanał alfa albo głębi — zamiast rozrzucać je po katalogu.
Jest jeszcze druga korzyść, dla części osób ważniejsza niż rozmiar: HEIF obsługuje więcej niż 8 bitów na kanał. Obraz 10-bitowy ma dużo więcej zapasu w gradientach, dzięki czemu niebo i odcienie skóry znoszą edycję lepiej niż w 8-bitowym pliku JPEG.
Dlaczego reszta twojego oprogramowania odmawia jego otwarcia
HEVC to opatentowany kodek z obowiązkami licencyjnymi dla dekoderów. To fakt prawny i handlowy, a nie techniczny, i jest głównym powodem nierównej obsługi: część systemów operacyjnych dostarcza dekoder, część dostarcza go tylko wtedy, gdy obecny jest dekoder sprzętowy, a część przeglądarek dekoduje HEIC, podczas gdy inne nie. Plik, który otwiera się natychmiast na telefonie, którym go zrobiono, może być nieczytelny na maszynie stojącej trzy metry dalej.
Dlatego FileSlimmer dekoduje HEIC, ale nigdy go nie zapisuje. Konwersja działa w twojej przeglądarce, z użyciem dekodera platformy, gdy taki istnieje, i dekodera WebAssembly hostowanego przez sam serwis, gdy go nie ma, a wynikiem jest JPEG, PNG lub WebP — formaty, które oprogramowanie odbiorcy naprawdę otworzy.
HEIC kontra JPEG, uczciwie
| Cecha | HEIC, czyli HEIF z HEVC | JPEG |
|---|---|---|
| Rozmiar przy podobnej jakości | Zwykle mniejszy | Zwykle większy |
| Głębia bitowa | 8 lub 10 bitów na kanał | 8 bitów na kanał |
| Przezroczystość | Obsługiwana | Nieobsługiwana |
| Wiele obrazów w jednym pliku | Obsługiwane | Nieobsługiwane |
| Otwiera się w nieznanym oprogramowaniu | Często nie | Prawie zawsze |
| Licencjonowanie | Opatentowany kodek | W praktyce wolny od obciążeń |
Co może kryć plik HEIC
Ponieważ kontener może pomieścić kolekcję, pojedynczy plik .heic potrafi zawierać więcej niż obraz, który widzisz. Live Photo niesie obok zdjęcia krótką sekwencję obrazów. Ujęcie portretowe może nieść mapę głębi. Seria może nieść wiele klatek, z jedną oznaczoną jako główna. Konwersja do JPEG daje jeden płaski obraz, więc wszystko, co kontener niósł obok obrazu głównego, w wyniku się nie znajdzie.
Orientacja zasługuje na osobną wzmiankę. HEIC zapisuje obrót jako metadane, dokładnie tak jak JPEG. Konwerter, który to zignoruje, produkuje zdjęcia położone na boku. FileSlimmer nanosi zapisaną orientację na piksele podczas konwersji, więc JPEG wygląda tak, jak zdjęcie wyświetlał telefon.
Którą kopię więc zachować?
- Zachowaj HEIC jako oryginał, jeśli poruszasz się w ekosystemie, który go czyta, i cenisz mniejszą bibliotekę oraz dodatkową głębię bitową.
- Konwertuj do JPEG wszystko, co wysyłasz na zewnątrz: do formularza, do usługi wydruku, jako załącznik do maila, do kolegi z nieznanym oprogramowaniem.
- Konwertuj do PNG tylko wtedy, gdy potrzebujesz bezstratnego wyniku do edycji; plik będzie znacznie większy niż każdy z dwóch pozostałych.
- Nie konwertuj HEIC do JPEG, a potem nie kasuj HEIC, jeśli HEIC był twoim jedynym oryginałem. Konwersja jest stratnym przekodowaniem i tak już stratnego obrazu.
Ograniczenia, o których warto wiedzieć przed konwersją
Konwersja to drugi stratny przebieg, więc odrobina jakości ginie nawet przy wysokim ustawieniu. Jeśli przeglądarka w ogóle nie potrafi zdekodować HEVC, a zapasowy dekoder hostowany przez serwis nie poradzi sobie z konkretnym wariantem — nietypowym profilem, uszkodzonym plikiem, kodekiem innym niż HEVC w tym samym kontenerze — konwersja kończy się niepowodzeniem, zamiast produkować coś błędnego. FileSlimmer zgłasza, który plik zawiódł i dlaczego, a oryginał zostawia nietknięty.
Jeśli chcesz przestać się z tym mierzyć u źródła, większość aparatów w telefonach ma ustawienie zgodności, które przełącza rejestrację z powrotem na JPEG. Wymieniasz miejsce na dysku na możliwość podania pliku komukolwiek.
Narzędzia do tego zadania
Źródła
- ISO/IEC 23008-12 — High Efficiency Image File Format
- ITU-T H.265 — High Efficiency Video Coding
- Nokia Technologies — HEIF technical overview