HEIC — формат Apple, в котором iPhone сохраняет фото по умолчанию. Он экономит место: при том же качестве файл меньше JPEG. Проблема в поддержке: Windows, старые редакторы и часть браузеров не открывают его без дополнительных кодеков.
HEIC и HEIF — не одно и то же
HEIF — контейнер для изображений, HEIC — его вариант с кодеком HEVC. На практике расширения .heic и .heif встречаются вместе, и оба могут содержать несколько кадров, например серию или Live Photo.
Почему не открывается
- Windows не включает HEVC-кодек по умолчанию;
- старые версии Photoshop и других редакторов не читают контейнер;
- браузер может показать ошибку или пустое изображение;
- файл с iPhone может быть Live Photo, а не обычной картинкой.
Варианты конвертации
Самый простой путь — открыть файл в браузере и сохранить в JPEG или WebP. Конвертер изображений делает это локально: файл не загружается на сервер, а библиотека HEIC подгружается только при первом использовании.
const result = await heic2any({
blob: file,
toType: 'image/jpeg',
quality: 0.92
});
const jpeg = Array.isArray(result) ? result[0] : result;
Для сайта лучше сразу делать WebP: он легче JPEG при похожем качестве. Для печати и старых программ — JPEG.
Качество и размер
HEIC уже сжат с потерями. Повторное сжатие в JPEG ухудшает картинку, поэтому не ставьте качество 40–50% без необходимости. Для веба достаточно 80–85% и уменьшения длинной стороны до 1600–1920 px.
Если фото нужно только для превью, конвертируйте уменьшенную копию. Исходник храните отдельно: он пригодится для печати.
Ориентация и метаданные
iPhone записывает ориентацию в EXIF. Браузеры обычно применяют её при отрисовке, но не все библиотеки конвертации сохраняют метаданные. Проверьте результат: фотография не должна оказаться повёрнутой. При конвертации через canvas ориентация применяется браузером автоматически.
Когда конвертировать на сервере
Серверная конвертация нужна для пакетной обработки тысяч файлов, хранения оригиналов и единого пайплайна. Для разовой задачи и приватности лучше браузер: файл не покидает устройство. Минус — скорость зависит от телефона или ноутбука.
Коротко
- HEIC — формат Apple, поддержка не universal;
- для веба конвертируйте в WebP или JPEG;
- не сжимайте повторно слишком сильно;
- проверяйте ориентацию после конвертации;
- локальная конвертация сохраняет приватность.