我编写了一个图像处理应用程序,使用javafx作为gui我想在屏幕上显示已处理的图片。我的程序将图像处理为三维双数组,如double [3] [1080] [1920],所以我必须减少图像的颜色空间并将双精度转换为字节或(如果可能)短裤,因为ImageView的javafx不支持每个RGB组件的浮点值或64位。我发现,Imageview只能加载来自文件或输入流的数据,所以我必须创建一个BufferedImage,用数组中的convertet数据填充它,并将BufferedImage编码作为JPEG,BMP,PNG或GIF写入流并使用javafx.scene.image.Image的construcor读取此流并将此图像传递给ImageView。将阵列转换为图像的一种残酷方法,我更新想要以任何文件格式进行编码,但我发现没有替代方法(除了不使用javafx)。
现在我的第一个问题:
BufferedImage的setRGB方法将所有颜色组件粘在一起作为int。我怎样才能以正确的方式将它们组合起来?
我的第二个问题:
是否为每个组件节省超过8位的方法?
谢谢你的帮助!
答案 0 :(得分:1)
WritableImage
使用PixelFormat
的PixelWriter
设置setPixels
,以完全相同的方式处理byte
数组PixelFormat
到PixelFormat.getByteRgbInstance()
。