Що таке HEIC і що лишати — його чи JPEG?
Телефон зберігає файли .heic, і на ноутбуці їх ніщо не відкриває. Що це таке і чи потрібні вони мені?
Що означає абревіатура HEIC
HEIC зазвичай розшифровують як High Efficiency Image Container. Розширення .heic позначає файл зображення з родини HEIF, у якому пікселі зазвичай закодовані через HEVC. У побуті люди кажуть HEIC, маючи на увазі файл фотографії з iPhone, хоча стандартом контейнера є HEIF, а кодеком стиснення всередині зазвичай є HEVC.
Ця відмінність пояснює, чому зміна .heic на .jpg не конвертує фотографію. Розширення файлу — лише етикетка; програма все одно знаходить усередині структуру HEIF і дані зображення, стиснуті через HEVC. Справжня конвертація має декодувати ці пікселі й закодувати новий файл JPEG, PNG або WebP.
HEIC — це контейнер, а не кодек
Файл .heic — це файл HEIF: High Efficiency Image File Format, стандартизований як ISO/IEC 23008-12. HEIF — це контейнер, побудований на тій самій базовій медіаструктурі файлів ISO, яку використовує MP4. Він визначає, як усередині файлу розкладені зображення, мініатюри, карти глибини, послідовності зображень і метадані, — але не визначає, як закодовані пікселі.
У файлах, які створює iPhone, пікселі закодовані через HEVC, відомий також як H.265, — відеокодек, стандартизований як ITU-T H.265. Звідси й переваги формату, і його проблеми: фактично ви зберігаєте фотографію як один кадр сучасного відеокодека.
Чому телефон обрав саме його
HEVC має інструменти внутрішньокадрового передбачення, яких немає в конструкції JPEG зразка 1992 року, тож за тієї самої візуальної якості йому зазвичай потрібно менше бітів. Пам'ять телефона скінченна, а фотобібліотеки — ні, тому ця економія коштує виробнику пристроїв реальних грошей. Контейнер також дозволяє одному файлу тримати кілька пов'язаних зображень — кадри серійної зйомки, нерухомий знімок і короткий ролик Live Photo, альфа-канал чи канал глибини — замість розкидати їх по теці.
Є й друга перевага, яка для декого важливіша за розмір: HEIF підтримує більше ніж 8 бітів на канал. У 10-бітного зображення значно більше запасу в градієнтах, і саме тому небо та відтінки шкіри переживають редагування краще, ніж у 8-бітному JPEG.
Чому інші ваші програми відмовляються його відкривати
HEVC — це запатентований кодек із ліцензійними зобов'язаннями для декодерів. Це юридичний і комерційний факт, а не технічний, і саме він є головною причиною нерівномірної підтримки: одні операційні системи постачають декодер, інші постачають його лише за наявності апаратного декодера, а одні браузери декодують HEIC, інші — ні. Файл, який миттєво відкривається на телефоні, що його зняв, може виявитися нечитабельним на машині за три метри звідти.
Саме тому FileSlimmer декодує HEIC, але ніколи його не пише. Конвертація виконується у вашому браузері: використовується платформний декодер, коли він є, і власний декодер на WebAssembly, коли його немає, а на виході — JPEG, PNG або WebP, тобто формати, які програма-одержувач справді відкриє.
HEIC проти JPEG, чесно
| Властивість | HEIC, тобто HEIF із HEVC | JPEG |
|---|---|---|
| Розмір за схожої якості | Зазвичай менший | Зазвичай більший |
| Бітова глибина | 8 або 10 бітів на канал | 8 бітів на канал |
| Прозорість | Підтримується | Не підтримується |
| Кілька зображень в одному файлі | Підтримується | Не підтримується |
| Відкривається в незнайомих програмах | Часто ні | Майже завжди |
| Ліцензування | Запатентований кодек | Фактично вільний від обтяжень |
Що може ховати файл HEIC
Оскільки контейнер може тримати колекцію, один .heic може містити більше, ніж те зображення, яке ви бачите. Live Photo несе поруч із нерухомим кадром коротку послідовність зображень. Портретний знімок може нести карту глибини. Серійна зйомка може нести багато кадрів, один із яких позначено як основний. Конвертація в JPEG дає одне пласке зображення, тож усього, що контейнер ніс поруч із основним зображенням, у результаті немає.
Орієнтацію варто згадати окремо. HEIC записує поворот як метадані — точнісінько як JPEG. Конвертер, який їх ігнорує, видає фотографії, покладені набік. FileSlimmer застосовує записану орієнтацію до пікселів під час конвертації, тож JPEG виглядає так, як його показував телефон.
То яку копію лишати?
- Лишайте HEIC як оригінал, якщо ви не виходите за межі екосистеми, яка його читає, і цінуєте меншу бібліотеку та додаткову бітову глибину.
- Конвертуйте в JPEG усе, що надсилаєте назовні: у форму завантаження, у сервіс друку, у вкладення до листа, колезі з невідомим програмним забезпеченням.
- Конвертуйте в PNG лише тоді, коли вам потрібен результат без втрат для редагування; файл вийде значно більшим за будь-який із двох інших.
- Не конвертуйте HEIC у JPEG, щоб потім видалити HEIC, якщо той HEIC був вашим єдиним оригіналом. Ця конвертація — перекодування з втратами вже й так стиснутого з втратами зображення.
Обмеження, про які варто знати до конвертації
Конвертація — це другий прохід із втратами, тож трохи якості губиться навіть на високому налаштуванні. Якщо браузер узагалі не вміє декодувати HEVC, а власний запасний декодер не справляється з конкретним варіантом — незвичним профілем, пошкодженим файлом, іншим за HEVC кодеком усередині того самого контейнера, — конвертація завершується помилкою, а не видає щось неправильне. FileSlimmer повідомляє, який файл не вдався і чому, і лишає оригінал недоторканим.
Якщо хочете позбутися цієї мороки в корені, у більшості камер на телефонах є налаштування сумісності, яке повертає зйомку до JPEG. Ви міняєте місце в пам'яті на можливість передати файл будь-кому.
Інструменти для цього
Джерела
- ISO/IEC 23008-12 — High Efficiency Image File Format
- ITU-T H.265 — High Efficiency Video Coding
- Nokia Technologies — HEIF technical overview