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(参考这里)。©

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

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>