上次跟朋友一起出去玩,拍的照片居然不知道怎么的有很多是 CR2 格式的。这个是佳能(Canon)开发的相机 RAW 文件的一种存档格式。RAW 文件包含了原图片文件在传感器产生后,进入照相机图像处理器之前的一切照片信息。但是这种文件格式很大(像我这里每张照片二十多兆),而且这些额外的信息对我意义不大,所以想批量转换成普通的 JPG 文件来保存。另外,如果不安装软件,Windows 系统都没法查看这些照片。
Linux 上有很多开源工具可以进行 CR2 到 JPG 格式的转换。其中比较出名的有个 UFRaw 工具。它还包含了一个命令行的批处理工具 ufraw-batch
。UFRaw 带了很多 RAW 格式图片处理的参数,比如修正镜头带来的失真等等。想深入了解的可以参考网友翻译的 UFRaw 指南。
安装 ufraw¶
我用的是 openSUSE Tumbleweed 系统,默认并没有安装这个工具。但是官方源中就有,所以安装起来也很方便,
$ sudo zypper install ufraw
用 ufraw-batch 处理单张照片¶
使用 ufraw-batch
进行 CR2 到 jpg 转换的常用格式为,
$ ufraw-batch IMG_2989.CR2 --out-type=jpeg --output IMG_2989.jpg
这样就将 IMG_2989.CR2
转换成了 JPEG 格式的 IMG_2989.jpg
。
默认情况下,ufraw-batch
会自动应用一些常规的处理,比如进行镜头失真矫正。矫正之后的图片可能会在四条边的中间部位出现黑边。这是因为矫正之后图像往中间缩小了一点点。
要自动裁切掉这些黑边,可以在上面的指令中加入 --auto-crop
参数,变成,
$ ufraw-batch IMG_2989.CR2 --out-type=jpeg --output IMG_2989.jpg --auto-crop
用 ufraw-batch 批量处理一个文件夹中的所有 CR2 照片¶
批处理的方式很简单。假设在路径 /home/me/my_cr2
下面存放着这些照片,我们可以先切换到这个目录下,新建一个保存转换后文件的文件夹 /home/me/cr2/my_jpg
,然后再进行批量转换。
$ cd /home/me/my_cr2 $ mkdir jpg $ ufraw-batch *.CR2 --out-type=jpeg --out-path=my_jpg --auto-crop
上面最后一条指令本来应该逐个转换该文件夹中所有的 CR2 文件的,但是因为当前 UFRaw 存在的一个问题,会导致转换一个文件后就崩溃,从而无法完成全部转换。
一个临时的解决方案是使用 Bash 的 for
循环来每个文件调用一次 ufraw-batch
。上面第三条指令变成,
$ for i in *.CR2 ; do ufraw-batch $i --out-type=jpeg --out-path=my_jpg --auto-crop ; done
这是写成一行的写法。分行写就是,
for i in *.CR2 do ufraw-batch $i --out-type=jpeg --out-path=my_jpg --auto-crop done
后记¶
图形界面的批处理软件应该也是有的,不过我还是决定命令行挺好用的,也方便同时做一些别的更改。
在佳能的网站上还看到了用于苹果系统的转换工具 CR2 Converter。
Windows 下可以先安装 GIMP(一个开源的、与 PhotoShop 类似的软件)再安装 UFRaw(参考这里)。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/convert-cr2-to-jpeg-in-linux-bash/>。转载请保留此信息及相应链接。