代码之家  ›  专栏  ›  技术社区  ›  Nova

如何使用mogrify(ImageMagick)将NEF转换为*。jpg和保留EXIF数据?

  •  2
  • Nova  · 技术社区  · 7 年前

    我正在转换大约9000张照片。NEF至。jpg。

    • 我想保留所有EXIF数据,最重要的是创建的日期和时间,纬度和经度。
    • 我希望JPG的质量尽可能高。

    我刚刚开始从命令行使用ImageMagick。我也有 Exiftool公司 安装。我正在使用 mogrify 命令,因为它可以很好地处理批处理。

    当我跑步时

    mogrify -format jpg *.NEF
    

    我所有的。NEF文件已成功转换为JPG,但 .

    我已经搜索了很多地方,试图找到一个解决方案,似乎我可能必须安装ufraw,但如果可能的话,我想要一个使用我已有软件的解决方案- ImageMagick .

    提前感谢您对如何操作提出的任何建议。

    更新:

    • -quality 100 在ImageMagick中,图像大小增加约45 MB!为什么?
    • 代码 exiftool -tagsfromfile %d%f.NEF -ext jpg -overwrite_original . 将exif信息添加到JPG。
    1 回复  |  直到 7 年前
        1
  •  5
  •   Mark Setchell    7 年前

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

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

    convert somefile.NEF somefile.jpg
    

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

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

    如果您有数千个图像,并且在macOS或基于Linux/Unix的操作系统上,我建议您 GNU并行 就像这样,它会让你为英特尔付出如此高昂代价的那些可爱的内核继续忙碌:

    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,然后执行所有 exiftool 莫格里菲 同时,假设一个正在处理的文件的名称以[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循环,如 this :

    FOR %%G IN (*.NEF) DO (
       exiftool -tagsfromfile %%G -all:all %%~dpnG.jpg
    )
    

    %%~dpnG 部分是基于 this answer .