Как использовать mogrify (ImageMagick) для преобразования из NEF в *.jpg и сохранения данных EXIF?
Я конвертирую около 9000 фотографий из.NEF в.jpg.
- Я хотел бы сохранить все данные EXIF, наиболее важные дата и время, Latidude и Longitude.
- Я бы хотел, чтобы JPG были максимально высокого качества.
Я только начал использовать ImageMagick из командной строки. У меня также установлен Exiftool. Я использую mogrify
команда, потому что она хорошо обрабатывает партии.
Когда я бегу
mogrify -format jpg *.NEF
Все мои файлы.NEF успешно конвертируются в JPG, но все данные EXIF теряются.
Я довольно долго искал, чтобы попытаться найти решение этой проблемы, и мне кажется, что мне, возможно, придется установить ufraw, но, если это возможно, я бы хотел найти решение, использующее программное обеспечение, которое у меня уже есть - ImageMagick и Exiftool.
Заранее благодарим за любые советы о том, как это сделать.
Обновить:
- Изображения, которые я конвертировал с помощью mogrify, немного меньше (~ 1-2 МБ), чем те, которые были получены моим коллегой с помощью Picasa для преобразования NEF в JPG. Но когда я укажу
-quality 100
в ImageMagick размеры изображений увеличиваются на 45 МБ! Зачем? - Код
exiftool -tagsfromfile %d%f.NEF -ext jpg -overwrite_original .
добавляет EXIF-информацию в JPG.
1 ответ
Подумайте дважды, прежде чем делать это - вы действительно отбрасываете много информации - и если вы не хотите этого, то почему бы сначала не снимать JPEG вместо RAW?
FWIW, вы можете использовать ImageMagick, чтобы получить JPEG:
convert somefile.NEF somefile.jpg
Затем вы можете скопировать теги из оригинала в файл, созданный ImageMagick:
exiftool -tagsfromfile somefile.NEF -all:all somefile.jpg
Если у вас есть тысячи образов и вы используете macOS или приличную ОС Linux/Unix, я бы порекомендовал GNU Parallel, как этот, и он будет занят всеми этими замечательными ядрами, за которые вы так дорого заплатили Intel:
parallel --dry-run 'convert {} {.}.jpg; exiftool -tagsfromfile {} -all:all {.}.jpg' ::: *nef
Пример вывода
convert a.nef a.jpg; exiftool -tagsfromfile a.nef -all:all a.jpg
convert b.nef b.jpg; exiftool -tagsfromfile b.nef -all:all b.jpg
и если это выглядит хорошо, удалите --dry-run
так что на самом деле запускает команду.
Если вы работаете в Windows, вам нужно будет выполнить некоторые специальные jiggery-pokery, чтобы сделать это в любой разумный период времени. Вы можете использовать mogrify
команда и получить все преобразования, сделанные в JPEG, а затем сделать все exiftool
повторное вложение данных EXIF позже. Если ваши файлы названы в какой-то системе с инкрементными числами, вы можете запустить две или три копии mogrify
параллельно - скажем, один делает файлы, чьи имена заканчиваются на [0-4], а другой делает файлы, чьи имена заканчиваются на [5-9]. Я не говорю на Windows, но это, вероятно, выглядело бы как две команды, каждая из которых работает в своей командной строке:
mogrify -format jpg *0.NEF *1.NEF *2.NEF *3.NEF *4.NEF
mogrify -format jpg *5.NEF *6.NEF *7.NEF *8.NEF *9.NEF
Тогда вы бы сделали exiftool
когда они все закончили, но вы должны будете использовать цикл FOR следующим образом:
FOR %%G IN (*.NEF) DO (
exiftool -tagsfromfile %%G -all:all %%~dpnG.jpg
)
%%~dpnG
часть - это предположение, основанное на этом ответе.