Чтобы преобразовать папку с фотографиями HEIC в формат JPEG на macOS с переносом метаданных EXIF, используйте sips для создания JPEG, а затем ExifTool для копирования метаданных из каждого оригинала. Оставьте исходные файлы HEIC без изменений и сохраните новые файлы в отдельную папку. Этот двухэтапный процесс делает перенос метаданных явным: успешное преобразование изображения само по себе не гарантирует, что все поля EXIF попали в файл JPEG.
Что нужно знать перед преобразованием
JPEG использует другой формат кодирования изображения, поэтому графические данные сжимаются заново. Выполнить преобразование без изменения качества изображения невозможно. Метаданные — отдельный вопрос: сведения о камере, дата съёмки и GPS-метки могут храниться в исходном файле, но не каждое поле HEIC имеет эквивалент, который поддерживается форматом JPEG. Таким образом, копирование метаданных не гарантирует, что каждое поле останется неизменным. Если вам важен определённый тег, обязательно проверьте результат.
Приложение «Просмотр» в macOS позволяет экспортировать в JPEG одно или сразу несколько выбранных изображений: откройте файлы в одном окне, выделите их на боковой панели и выберите Файл > Экспортировать. Apple описывает элементы управления форматом и качеством, но в документации нет подтверждения, что пакетный экспорт сохраняет абсолютно все поля EXIF. Если сохранение метаданных является обязательным требованием, используйте описанный ниже процесс явного копирования и проверки. Руководство Apple по конвертации в приложении «Просмотр»
Преобразование и копирование метаданных с помощью Терминала
В этом сценарии для конвертации каждого изображения используется утилита Apple sips, а затем с помощью ExifTool метаданные копируются из соответствующего оригинала. Сначала установите ExifTool, следуя официальной инструкции по установке. Создайте исходную папку с файлами HEIC и пустую целевую папку. В примере используются пути ~/Pictures/HEIC-Originals и ~/Pictures/JPEG-Converted; измените их, если ваши папки расположены иначе.
Откройте Терминал и выполните следующий готовый скрипт Bash. Он корректно обрабатывает пробелы в именах папок и файлов, распознаёт расширения .heic и .heif независимо от регистра и сохраняет файлы JPEG в отдельную папку назначения.
src="$HOME/Pictures/HEIC-Originals"
out="$HOME/Pictures/JPEG-Converted"
mkdir -p "$out"
find "$src" -maxdepth 1 -type f \( -iname '*.heic' -o -iname '*.heif' \) -print0 |
while IFS= read -r -d '' file; do
name=$(basename "${file%.*}")
jpg="$out/$name.jpg"
if sips -s format jpeg "$file" --out "$jpg"; then
exiftool -TagsFromFile "$file" -all:all -overwrite_original "$jpg"
else
printf 'Conversion failed: %s\n' "$file" >&2
fi
done
Команда sips создаёт JPEG; параметры ExifTool -TagsFromFile и -all:all копируют метаданные из указанного оригинала. Параметр -overwrite_original запрещает ExifTool создавать резервную копию каждого файла JPEG. В документации ExifTool описан процесс копирования метаданных и указано, что набор тегов, которые могут быть сохранены в целевом формате, зависит от самого формата. Документация приложения ExifTool
Скрипт ищет файлы только на верхнем уровне исходной папки. Если ваши фотографии распределены по вложенным папкам, запустите скрипт для каждой папки отдельно или измените пути поиска и назначения, чтобы файлы с одинаковыми именами не перезаписывали друг друга. Убедитесь, что целевая папка пуста или имена её файлов не конфликтуют с существующими. Не удаляйте оригиналы, пока не проверите результат.
Проверка наличия необходимых метаданных в файлах JPEG
Используйте ExifTool, чтобы сравнить полученный JPEG с исходным файлом. Замените пример имени файла на имя файла из вашей папки:
exiftool -a -G1 -s "$HOME/Pictures/HEIC-Originals/IMG_0001.HEIC"
exiftool -a -G1 -s "$HOME/Pictures/JPEG-Converted/IMG_0001.jpg"
Сравните важные для вас поля, такие как DateTimeOriginal, марка и модель камеры, а также координаты GPS. Если поле присутствует в HEIC, но отсутствует в JPEG, процесс преобразования или копирования метаданных не сохранил его в пригодном для использования виде; не считайте, что поле перенеслось, только потому, что Finder показывает дату или файл JPEG открывается. ExifTool умеет читать метаданные из множества форматов изображений, но список поддерживаемых тегов и полей, доступных для записи, различается в зависимости от формата. Документация ExifTool по форматам и тегам
Частые проблемы и ограничения
Если sips сообщает, что не может прочитать файл, убедитесь, что формат изображения поддерживается, а расширение файла соответствует его фактическому типу. Если Терминал выдаёт ошибку exiftool: command not found, значит ExifTool не установлен или путь к нему отсутствует в переменной окружения PATH. Если два исходных файла имеют одинаковое базовое имя (без учёта расширения), скрипт попытается записать их в один и тот же JPEG-файл; в таком случае распределите эти файлы по разным целевым папкам или переименуйте их перед конвертацией.
Копирование EXIF сохраняет не все свойства исходного снимка. Формат JPEG не может содержать данные, специфичные только для HEIC, а перенос тегов не делает пиксели JPEG идентичными декодированному изображению HEIC. Для важных архивов сохраняйте исходные файлы HEIC, рассматривая JPEG лишь как копии для обеспечения совместимости. Если конечная цель — просто быстро сменить формат и метаданные не имеют значения, проще воспользоваться штатным пакетным экспортом в приложении «Просмотр»; если же важны конкретные поля EXIF, выполняйте преобразование, копирование и проверку вручную.
Источники
Преобразование типов файлов изображений в приложении «Просмотр» на Mac — Служба поддержки Apple
Документация приложения ExifTool — ExifTool
Имена тегов ExifTool — ExifTool
Установка ExifTool — ExifTool