Почему фото с iPhone в HEIC и как их открыть
Что на самом деле лежит внутри файла .heic, почему Windows и Chrome отказываются его открывать и как перевести партию снимков с iPhone в JPG без загрузки на сервер.
Отправляете фото человеку на Windows, а он пишет, что файл не открывается. Ничего не сломалось. iPhone сохранил снимок в HEIC, а декодера для этого формата на его машине нет.
Apple сделала HEIC форматом камеры по умолчанию в сентябре 2017 года, вместе с iOS 11. Причина — место: при той же видимой детализации снимок занимает примерно вдвое меньше, чем JPEG. На телефоне это лишние тысячи фотографий. Расплата — совместимость, и за эти годы она никуда не делась.
Что лежит внутри .heic
HEIC — это контейнер, а не способ сжатия. Оболочка называется HEIF, описана в стандарте ISO/IEC 23008-12 и устроена из вложенных блоков так же, как MP4. Сама картинка внутри — один ключевой кадр HEVC (H.265), то есть тот же кодек, которым жмут видео 4K.
В этом вся загвоздка. HEVC накрыт патентными пулами, и лицензия стоит денег за каждое устройство. Apple платит, поэтому Safari открывает HEIC не задумываясь. Microsoft продаёт декодер для Windows отдельным дополнением в Store. Google и Mozilla не стали его встраивать вообще — и Chrome с Firefox отказываются показать .heic даже на Mac, где система под ними прекрасно справилась бы сама.
Откройте 12-мегапиксельный снимок с iPhone в hex-редакторе, и будет второй сюрприз: это не одна картинка. Это мозаика из плиток 512 × 512 — восемь столбцов на шесть строк для кадра 4032 × 3024 — плюс крошечный блок grid, который объясняет, как их сшить обратно. Телефон декодирует плитки параллельно, отчасти поэтому лента «Фото» и листается мгновенно. По той же причине некоторые старые программы для ПК показывают снимок с iPhone как 512 × 512: читают заголовок первой плитки и останавливаются.
Три выхода
Поменять настройку в телефоне. «Настройки» → «Камера» → «Форматы» → «Наиболее совместимый». Всё, что снято после этого, будет в JPEG. Уже снятое останется в HEIC.
Поручить это Mac. AirDrop, «Почта» и «Сообщения» по-тихому переводят фото в JPEG при отправке — поэтому многие владельцы iPhone вообще не сталкиваются с проблемой.
Сконвертировать самому. Перетащите файлы в конвертер HEIC в JPG, выберите JPG, PNG или WebP и скачайте по одному либо одним архивом. Работает декодер самого браузера, так что на сервер ничего не уходит, — и это не мелочь: в HEIC с камеры записаны GPS-координаты, которым на чужом сервере делать нечего. На Windows и Linux понадобится Safari на другом устройстве или настройка из первого пункта; инструмент честно скажет, что декодера нет, вместо того чтобы молча выдать ошибку.
JPG получится тяжелее, и так и должно быть
Обычно в два–четыре раза. HEIC на 2 МБ, превратившийся в JPG на 5 МБ, многих озадачивает, хотя это просто разница поколений сжатия, выраженная в байтах. Ползунок качества на 80 возвращает большую часть веса, и на фотографии разницу не видно. WebP справляется ещё лучше — примерно на 25–30% компактнее JPG при том же качестве, если сайт, куда вы грузите, его принимает. А если нужно загнать под лимит уже готовый JPG, для этого есть сжатие изображений.
Метаданные исчезают
Конвертация через canvas оставляет пиксели и выбрасывает всё остальное: модель камеры, объектив, выдержку, дату съёмки, GPS. Для публикации это удобно, а вот если вы сортировали папку по дате съёмки — досадно. Выпишите нужное из файла заранее. Если же стереть метаданные и было целью, а формат менять не хочется, берите удаление метаданных EXIF.
Что точно не пропадёт — Live Photo. Видеочасть лежит отдельным файлом .mov в библиотеке телефона, внутри .heic её изначально не было.
Накопилась папка .heic? Переведите её в JPG здесь — всю сразу, прямо в браузере.