如何在Clojure中创建每通道16位的图像?
我正在使用ImageIO类来读取和写入图像文件,它似乎可以很好地读取图像文件。它甚至可以将16位数据放入正确的色带中。
但是,我的应用程序需要转换,特别是Gimp的“叠加”转换,我必须通过查看两个单独图像的图像数据来应用。因此,从每个图像中,我从相应的波段中获取原始数据,运行转换,然后将结果写入新图像。
但是,我找不到让新图像接受16位值的方法。我必须将结果从每通道16位缩放到每通道8位,我不想这样做。
我正在创建我的图像:
(BufferedImage. 800 600 BufferedImage/TYPE_INT_RGB)
哪一个应该等同于
BufferedImage anon = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
现在,有没有办法创建一个新的BufferedImage,每个通道接受16位?或者我是否必须切换到其他库?
如果我转换,我的要求是......
a)色彩空间意识 b)每通道16位
在此之前,我会尽力使用8位。
更新2011/08/10 : 虽然可能需要两周才能尝试,但看起来Java的高级成像API(JAI)可以满足我的需求。它支持色彩空间,每个通道/频段最多支持32位。
答案 0 :(得分:2)
据我所知(如果我错了,请纠正我):
(BufferedImage. 800 600 BufferedImage/TYPE_INT_RGB)
等同于(*):
BufferedImage anon = BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
而是:
BufferedImage anon = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
如果您想要(*),请执行:
(. BufferedImage 800 600 BufferedImage/TYPE_INT_RGB)
也许你的帖子中有拼写错误......或者可能不是? (是的,这应该是评论,但我还不能这样做)