Перейти к содержимому
PulsarKit

Пакетно конвертировать папку фото HEIC с iPhone в JPG

Конвертация папки фото с iPhone в JPG кажется пустяком, пока несколько снимков не возвращаются повернутыми боком без видимой причины.

Автор: PulsarKit · ·

Слева восемь миниатюр HEIC из одной папки, две из них лежат боком с темными полями сверху и снизу; справа те же восемь фото в JPG, все стоят прямо

Почему часть фото получается боком, а часть — нет

Файл HEIC может описывать ориентацию кадра в двух разных местах, и они не всегда совпадают. Современные iPhone записывают поворот прямо в контейнер файла, поэтому корректный декодер сразу отдает уже повернутое как надо фото и больше ничего не трогает. Старые телефоны, например iPhone 7, ничего не пишут в контейнер и сохраняют ориентацию только в старом теге EXIF Orientation. Тогда декодер, который читает только контейнер, получает кадр, лежащий на боку.

Из-за этого папка из сотни фото, синхронизированных со старого и нового телефона, после конвертации возвращается с частью снимков в нормальном положении, а частью боком, будто случайно. Конвертер применяет одно правило ко всем файлам, хотя по самому формату они живут по разным правилам. Правильная конвертация, как в «HEIC в JPG», должна сначала проверить контейнер и только если в нем нет данных, обращаться к тегу EXIF. Потом нужно «запечь» поворот прямо в пиксели, чтобы дальше по цепочке уже ничего не смогло повернуть файл еще раз.

Что должно переходить вместе с фото, а что решаете вы

Конвертированный JPG может нести ту же дату съемки, модель камеры, объектив и параметры экспозиции, которые были в исходном HEIC. Они переписываются в стандартный блок EXIF так, как если бы их сразу записал фотоаппарат. GPS-координаты вынесены в отдельный переключатель от остальных данных, а у снимка, который уже стал JPG, их можно убрать потом в «Удалить метаданные». Это важно: перед тем как выкладывать пачку фото в открытый доступ, чаще всего нужно оставить дату и убрать место съемки. Встроенную в исходный файл миниатюру полезно выкинуть при любом раскладе: она показывает фото в исходной, еще не исправленной ориентации, и если протащить такой устаревший предпросмотр в новый файл, путаница с поворотами вернется через черный ход.

Файл с .heic, который на деле не HEIC

Некоторые камеры и мессенджеры сохраняют кадры видео или отдельные изображения, сжатые AV1, в контейнере, но по привычке все равно дают файлу расширение .heic. Проверка формата по самим байтам файла, а не по имени, отлавливает такие случаи: файл определяется как AVIF и декодируется нужным кодеком, вместо того чтобы выдать ошибку или сломанную картинку. Файл, у которого контейнер не соответствует ни одному из этих форматов, например по ошибке переименованный видеоролик, лучше сразу отклонить с понятным сообщением, а не выдавать мусор без предупреждения.

Live Photo конвертируется в свой статичный кадр

Файл .heic у Live Photo — только статичная половина пары. Движущаяся часть живет в отдельном файле .mov рядом, до которого большинство конвертеров не дотрагивается. Конвертация одного только .heic дает тот кадр, который записан в контейнере как основное изображение: полноценное фото в полном разрешении, а не мелкую заглушку из миниатюры. Если важно сохранить и движение, .mov нужно обрабатывать отдельно: конвертация .heic сама по себе его с собой не забирает.

Как сделать это сразу для всей пленки камеры

Когда речь о папке из пятидесяти или сотни фото, главное, чтобы один проблемный файл не останавливал остальные. Поврежденный HEIC, переименованное видео или кадр с необычным контейнером нужно пропустить с понятным объяснением, а не бросать всю пакетную обработку на середине. Настройка качества здесь менее важна, чем обычно думают: значение около 90 из 100 визуально почти неотличимо от исходного HEIC, но дает заметно меньший размер файла. Это безопасный вариант по умолчанию для всей папки. Лучше оставить его единым, чем подбирать качество для каждого кадра вручную. Исключение — скриншоты и графика: их лучше пропускать через «HEIC в PNG», который сохраняет каждый пиксель без повторного сжатия.

Как сделать это на самом телефоне и две ошибки, которых лучше избежать

Для конвертации компьютер не нужен. Откройте «HEIC в JPG» в Safari на iPhone, выберите фото из галереи, и работа пойдет в браузере самого телефона: декодер — файл размером около 1 МБ — скачивается один раз и кэшируется, и больше ничего по сети не передается. Safari часто сообщает для HEIC пустой тип файла, поэтому окно выбора принимает файлы и по расширениям .heic, .heif и .hif. В один пакет помещается до 50 фото по 100 МБ каждое и 500 МБ в сумме; полоса прогресса считает готовые файлы, а тот, что не удалось открыть, пропускается с пометкой, не отменяя остальные. Несколько фото возвращаются одним ZIP, одно фото — обычным .jpg. О двух ошибках стоит знать. Первая: пытаться убрать геометку до конвертации. В файле HEIC метаданные вплетены в сам контейнер, поэтому сначала конвертируйте, выключив переключатель GPS, если фото пойдут в открытый доступ, а потом, если нужно убрать что-то еще, прогоните JPG через «Удалить метаданные». Вторая: тянуться к PNG, потому что он звучит как формат получше. PNG — формат без потерь, поэтому HEIC на 2 МБ регулярно превращается в PNG на 20 МБ, и это оправдано, только если фото дальше пойдет в редактирование; для отправки, почты и форм загрузки JPG с качеством 90 по умолчанию выглядит так же, а весит примерно в десять раз меньше.

Инструменты из этой статьи

Читать дальше