如何将多个子文件夹中的RAW图像批量转换为DNG
How to batch convert RAW images in several subfolders to 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;
最简单和最快的方法是使用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
参数意味着它对 upper/lower 情况 不敏感 ,因此它将适用于“.RW2”和“[=73” =].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
输出,你需要安装 Adobe 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
会将 fast load 信息添加到 DNG
DNG Converter 似乎很乐意 运行 多个并行实例,但我没有测试数千个文件。如果您 运行 遇到问题,只需 运行 一次更改为 parallel -j 1 ...
即可
Adobe DNG Converter 在 macOS 下使用 homebrew 很容易安装,如下所示:
brew install caskroom/cask/adobe-dng-converter
所以我的主文件夹中有 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;
最简单和最快的方法是使用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
参数意味着它对 upper/lower 情况 不敏感 ,因此它将适用于“.RW2”和“[=73” =].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
输出,你需要安装 Adobe 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
会将 fast load 信息添加到DNG
DNG Converter 似乎很乐意 运行 多个并行实例,但我没有测试数千个文件。如果您 运行 遇到问题,只需 运行 一次更改为 parallel -j 1 ...
Adobe DNG Converter 在 macOS 下使用 homebrew 很容易安装,如下所示:
brew install caskroom/cask/adobe-dng-converter