belun.app Блог
EN

Почему фото с iPhone в HEIC и как их открыть

Что на самом деле лежит внутри файла .heic, почему Windows и Chrome отказываются его открывать и как перевести партию снимков с iPhone в JPG без загрузки на сервер.

Рука держит iPhone с галереей фотографий HEIC, готовых к конвертации в 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 здесь — всю сразу, прямо в браузере.

Попробуйте инструмент

Конвертер HEIC в JPG →