从Java读取RAW图像

佳能/尼康/其他相机以其一些专有格式(.CR2,无论如何)保存传感器的原始输出。 是否有任何Java库旨在读取它们并转换为可管理的BufferedImages?

我在这里并不关心完全可自定义的转换,类似于ufraw或imagemagick,而是简单的“仅适用于”渲染此类图像的简单预览。

我一直在你身边,我为你感觉。 最好的办法是使用基于Adobe或dcraw的程序自动创建缩略图。 使用Adobe转换器的临时DNG文件可能更容易使用。

如果你坚持用Java做这件事,那你就会陷入一阵痛苦之中。 RAW格式经常变化,有各种各样的疯狂细微差别,并且故意难以使用。 相机制造商希望您使用他们的RAW转换软件,以最佳方式显示相机的能力并拧紧Adobe。 dcraw背后的人发现有些相机制造商甚至现在使用加密!

现有的Java库很差 – 自从我上次查看它以来,JRawIO已经有所改进,但它只支持dcraw的一小部分格式。 除了列出的库之外, imagero库还可以显示图像的缩略图。

根据个人经验,甚至不要考虑编写自己的RAW文件阅读器。 我试着用一个非常简单的RAW格式做一次(只是一个固态的传感器数据arrays,每像素12位)。 dcraw源严重转换为Java。 你还没有看到过这样一场有点傻瓜的噩梦。 花了我几天来调试字节对齐和字节序的问题。

jrawio是Java Image I / O的插件。 有了它,您可以从原始图像文件中读取栅格数据,缩略图和元数据。

nef和cr2已包含jpeg中的预览图像。 找到正确的偏移和正确的长度来提取它…… Laurent Clevy @ lclevy.free.fr/raw

洛朗

除非您想编写自己的文件解析器/加载器 (听起来很有趣),或许JMagick会帮助您。 我没有尝试过,因为JMagick使用JNI,所以在你的目标平台上它可能无效。

更新: dcraw看起来像一个很好的资源/参考