如何使用mogrify(ImageMagick)从NEF转换为* .jpg并保留EXIF数据?

时间:2017-11-15 14:44:32

标签: imagemagick jpeg exif exiftool mogrify

我正在将.NEF的9000张照片转换为.jpg。

  • 我想保留所有EXIF数据,最重要的是创建日期和时间,Latidude和Longitude。
  • 我希望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。

1 个答案:

答案 0 :(得分:4)

在这样做之前要三思而后行 - 你真的丢弃了很多信息 - 如果你不想要它,为什么不首先拍摄JPEG而不是RAW?

FWIW,您可以使用ImageMagick获取JPEG:

convert somefile.NEF somefile.jpg

然后,您可以将标签从原件复制到ImageMagick新创建的文件:

exiftool -tagsfromfile somefile.NEF -all:all somefile.jpg 

如果你有成千上万的图像,并且是在macOS或基于Linux / Unix的体面的操作系统上,我会建议像这样的 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]结尾的文件,另一个执行文件名称的文件在[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的猜测。