如何批量转换几个子文件夹中的RAW图像到DNG

时间:2017-12-14 14:11:47

标签: python image macos dng

所以我的主文件夹中有20个子文件夹,每个子文件夹中有大约200个文件。我一直在尝试编写一个脚本,将每个子文件夹中的每张图片转换为DNG。 我做了一些研究,并能够批量转换当前文件夹中的图像。 我已经尝试开发这个想法,让它适用于子文件夹,但没有成功。 这是我写的代码:

for D in 'find . -type d'; do for i in *.RW2; do sips -s format jpeg $i --out "${i%.*}.jpg"; cd ..; done; done;

1 个答案:

答案 0 :(得分:1)

最简单最快的方法是使用 GNU Parallel ,如下所示:

find . -iname \*rw2 -print0 | parallel -0 sips -s format jpeg --out {.}.jpg {}

因为它会并行使用所有CPU内核。但是在你启动任何未经测试的命令之前,最好使用这样的--dry-run选项,以便它显示它将要做什么,但实际上没有做任何事情:

find . -iname \*rw2 -print0 | parallel --dry-run -0 sips -s format jpeg --out {.}.jpg {}

示例输出

sips -s format jpeg --out ./sub1/b.jpg ./sub1/b.rw2
sips -s format jpeg --out ./sub1/a.jpg ./sub1/a.RW2
sips -s format jpeg --out ./sub2/b.jpg ./sub2/b.rw2

如果您喜欢它的外观,请移除--dry-run并再次运行。请注意,-iname参数表示不敏感大写/小写,因此它适用于“ .RW2”和“ .rw2”。

GNU Parallel 可以通过 homebrew 轻松安装在macOS上:

brew install parallel

它也可以在没有包管理器的情况下安装(如 homebrew ),因为它实际上是一个Perl脚本,而Mac则附带Perl。所以你可以通过在终端中执行此操作来安装:

(wget pi.dk/3 -qO - ||  curl pi.dk/3/) | bash

您的问题似乎很困惑,您是否需要DNG文件,如您的标题建议,或JPEG文件,如您的代码建议。我的代码生成了原样的JPEG。如果您想要DNG输出,则需要安装 Adob​​e DNG Converter ,然后运行:

find . -iname \*rw2 -print0 | parallel --dry-run -0 \"/Applications/Adobe DNG Converter.app/Contents/MacOS/Adobe DNG Converter\" 

您可以在上述命令的末尾添加一些其他选项:

  • -e嵌入 RW2
  • 中的原始DNG文件
  • -u将创建未压缩的DNG文件
  • -fl会将快速加载信息添加到DNG

DNG转换器似乎很高兴并行运行多个实例,但我没有测试数千个文件。如果遇到问题,只需更改为parallel -j 1 ...

,即可一次运行一个作业

Adob​​e DNG Converter 可以使用自制程序在macOS下轻松安装,如下所示:

brew install caskroom/cask/adobe-dng-converter