如何使用 mogrify (ImageMagick) 从 NEF 转换为 *.jpg 并保留 EXIF 数据?
How to use mogrify (ImageMagick) to convert from NEF to *.jpg and retain EXIF data?
我正在将大约 9000 张照片从 .NEF 格式转换为 .jpg。
- 我想保留所有 EXIF 数据,最重要的是创建日期和时间、纬度和经度。
- 我希望 JPG 的质量尽可能高。
我刚刚开始从命令行使用 ImageMagick。我还安装了 Exiftool。我正在使用 mogrify
命令,因为它可以很好地处理批次。
当我运行
mogrify -format jpg *.NEF
我所有的 .NEF 文件都已成功转换为 JPG,但是所有 EXIF 数据都丢失了。
我搜索了很多,试图找到解决这个问题的方法,看来我可能必须安装 ufraw,但如果可能的话,我想要一个使用我已有软件的解决方案 - ImageMagick 和 Exiftool。
在此先感谢您提供有关如何执行此操作的任何建议。
更新:
- 我使用 mogrify 转换的图像比我的同事使用 picasa 将 NEF 转换为 JPG 输出的图像略小(~ 1-2 MB)。但是当我在 ImageMagick 中指定
-quality 100
时,图像大小增加了大约 45 MB!为什么?
- 代码
exiftool -tagsfromfile %d%f.NEF -ext jpg -overwrite_original .
将exif 信息添加到JPG。
在这样做之前三思而后行 - 您确实丢弃了很多信息 - 如果您不想要它,为什么不首先拍摄 JPEG 而不是 RAW?
FWIW,您可以使用 ImageMagick 获取 JPEG:
convert somefile.NEF somefile.jpg
然后就可以将原来的tags复制到ImageMagick新建的文件中:
exiftool -tagsfromfile somefile.NEF -all:all somefile.jpg
如果你有几千张图片,并且在 macOS 或像样的 Linux/Unix-based OS 上,我会推荐 GNU Parallel像这样,它会让所有那些你为英特尔付出如此高昂代价的可爱内核忙碌起来:
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 的所有转换,然后稍后再对 EXIF 数据进行所有 exiftool
重新嵌入。如果你的文件是用某种带有递增数字的系统命名的,你可以同时启动两个或三个 mogrify
的副本 - 比如说一个处理名称以 [0-4] 结尾的文件,另一个处理名称以 [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
的事情,当他们都完成了,但你必须使用像 this:
这样的 FOR 循环
FOR %%G IN (*.NEF) DO (
exiftool -tagsfromfile %%G -all:all %%~dpnG.jpg
)
%%~dpnG
部分是基于this answer的猜测。
我正在将大约 9000 张照片从 .NEF 格式转换为 .jpg。
- 我想保留所有 EXIF 数据,最重要的是创建日期和时间、纬度和经度。
- 我希望 JPG 的质量尽可能高。
我刚刚开始从命令行使用 ImageMagick。我还安装了 Exiftool。我正在使用 mogrify
命令,因为它可以很好地处理批次。
当我运行
mogrify -format jpg *.NEF
我所有的 .NEF 文件都已成功转换为 JPG,但是所有 EXIF 数据都丢失了。
我搜索了很多,试图找到解决这个问题的方法,看来我可能必须安装 ufraw,但如果可能的话,我想要一个使用我已有软件的解决方案 - ImageMagick 和 Exiftool。
在此先感谢您提供有关如何执行此操作的任何建议。
更新:
- 我使用 mogrify 转换的图像比我的同事使用 picasa 将 NEF 转换为 JPG 输出的图像略小(~ 1-2 MB)。但是当我在 ImageMagick 中指定
-quality 100
时,图像大小增加了大约 45 MB!为什么? - 代码
exiftool -tagsfromfile %d%f.NEF -ext jpg -overwrite_original .
将exif 信息添加到JPG。
在这样做之前三思而后行 - 您确实丢弃了很多信息 - 如果您不想要它,为什么不首先拍摄 JPEG 而不是 RAW?
FWIW,您可以使用 ImageMagick 获取 JPEG:
convert somefile.NEF somefile.jpg
然后就可以将原来的tags复制到ImageMagick新建的文件中:
exiftool -tagsfromfile somefile.NEF -all:all somefile.jpg
如果你有几千张图片,并且在 macOS 或像样的 Linux/Unix-based OS 上,我会推荐 GNU Parallel像这样,它会让所有那些你为英特尔付出如此高昂代价的可爱内核忙碌起来:
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 的所有转换,然后稍后再对 EXIF 数据进行所有 exiftool
重新嵌入。如果你的文件是用某种带有递增数字的系统命名的,你可以同时启动两个或三个 mogrify
的副本 - 比如说一个处理名称以 [0-4] 结尾的文件,另一个处理名称以 [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
的事情,当他们都完成了,但你必须使用像 this:
FOR %%G IN (*.NEF) DO (
exiftool -tagsfromfile %%G -all:all %%~dpnG.jpg
)
%%~dpnG
部分是基于this answer的猜测。