如何使用mogrify(ImageMagick)将NEF转换为*.jpg并保留EXIF数据?
我正在将大约9000张照片从.NEF转换为.jpg如何使用mogrify(ImageMagick)将NEF转换为*.jpg并保留EXIF数据?,imagemagick,jpeg,exif,exiftool,mogrify,Imagemagick,Jpeg,Exif,Exiftool,Mogrify,我正在将大约9000张照片从.NEF转换为.jpg 我想保留所有EXIF数据,最重要的是创建的日期和时间,纬度和经度 我希望JPG的质量尽可能高 我刚刚开始从命令行使用ImageMagick。我还安装了Exiftool。我使用的是mogrify命令,因为它可以很好地处理批处理 当我跑的时候 mogrify -format jpg *.NEF 所有my.NEF文件都已成功转换为JPGs,但所有EXIF数据均丢失 我已经搜索了很多地方,试图找到一个解决方案,似乎我可能必须安装ufraw,但如果
- 我想保留所有EXIF数据,最重要的是创建的日期和时间,纬度和经度
- 我希望JPG的质量尽可能高
mogrify
命令,因为它可以很好地处理批处理
当我跑的时候
mogrify -format jpg *.NEF
所有my.NEF文件都已成功转换为JPGs,但所有EXIF数据均丢失
我已经搜索了很多地方,试图找到一个解决方案,似乎我可能必须安装ufraw,但如果可能的话,我想要一个使用我已经拥有的软件的解决方案-ImageMagick和Exiftool
提前感谢您提供的有关如何执行此操作的任何建议
更新:
- 我使用mogrify转换的图像比我的同事使用picasa将NEF转换为JPG时输出的图像稍小(~1-2MB)。但是当我在ImageMagick中指定
时,图像大小增加了大约45MB!为什么?-quality 100
- 代码
将exif信息添加到JPGs中李>exiftool-tagsfromfile%d%f.NEF-ext jpg-overwrite_original.
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上,你将不得不做一些临时的拼凑游戏,以便在任何合理的时间范围内完成。您可以使用
mogrify
命令,将所有转换为JPEG,然后在以后重新嵌入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循环,如:
%%~dpnG
部分是基于猜测的。谢谢马克,谢谢。您的示例看起来像是针对一张照片的—我如何为9000张照片批处理?只是一个解释性的说明:我们在RAW中拍摄照片,以获得最大数量的信息,以备日后需要。我们正在把所有的照片放进一个马赛克,而我们的马赛克程序不拍摄NEF——JPG在过去工作得很好。我是一个更大的研究团队的成员,我无法控制照片的拍摄格式;)您使用的是什么操作系统?使用Windows 7。我有40个内存,但我想今天能为其他工作节省4个内存?我可以让它在一夜之间运行。谢谢你的更新,@marksetchell!但我正在寻找一个Windows解决方案。。。听起来我的Windows电脑上不会运行该代码?太好了!感谢您提供的并行处理mogrify的提示。我还更新了我的问题,使之成为一个不会产生恼人的备份JPG的解决方案。
FOR %%G IN (*.NEF) DO (
exiftool -tagsfromfile %%G -all:all %%~dpnG.jpg
)