Linux 系统转换 CR2 格式原生照片为 JPEG 格式

上次跟朋友一起出去玩,拍的照片居然不知道怎么的有很多是 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(参考这里)。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/convert-cr2-to-jpeg-in-linux-bash/>。转载请保留此信息及相应链接。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)