Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在缓冲映像中写入双值_Java_Bufferedimage_Pixels - Fatal编程技术网

Java 如何在缓冲映像中写入双值

Java 如何在缓冲映像中写入双值,java,bufferedimage,pixels,Java,Bufferedimage,Pixels,是否有可能在不使用Java进行任何类型转换的情况下将双twoD值写入缓冲图像??我有一个双值的二维矩阵。我希望将其作为图像写入,但在缓冲图像中只能写入整数值。最后,我必须能够从图像中读取这些双重值。有什么想法吗??“帮助我”是的,您可以,但首先您必须使用DataBufferDouble类型的DataBuffer创建一个BufferDiImage: public static BufferedImage Double(int width, int height, int channel)

是否有可能在不使用Java进行任何类型转换的情况下将双twoD值写入缓冲图像??我有一个双值的二维矩阵。我希望将其作为图像写入,但在缓冲图像中只能写入整数值。最后,我必须能够从图像中读取这些双重值。有什么想法吗??“帮助我”

是的,您可以,但首先您必须使用DataBufferDouble类型的DataBuffer创建一个BufferDiImage:

public static BufferedImage Double(int width, int height, int channel)
    {
    ColorSpace myColorSpace = new FloatCS(channel == 1 ? ColorSpace.TYPE_GRAY : ColorSpace.TYPE_RGB, channel) ;

    ColorModel myColorModel = new ComponentColorModel(myColorSpace,null,false,false,ColorModel.OPAQUE,DataBuffer.TYPE_DOUBLE) ;

    return new BufferedImage(myColorModel, myColorModel.createCompatibleWritableRaster(width, height), false, null) ;
    }

然后,您可以使用光栅或直接使用数据缓冲访问像素,但不能使用getRGB。

要求家庭作业帮助的问题必须包括您迄今为止为解决问题所做工作的摘要,以及您解决问题的困难描述。看,是的,你可以。您需要创建一个由
DataBuffer支持的自定义
BufferedImage
。键入DOUBLE
SampleModel
DataBuffer
。不确定它有多有用,但至少是可行的。可通过
DataBuffer
的支持数组直接访问
double
值。感谢您的帮助#haraldK先生。我会试试这个谢谢你@FiReTiTi。你能解释一下如何在图像上使用这个吗?我刚才给你的代码已经是图像了。然后,您可以使用光栅(mymimage.getRaster())和getSample和setSample方法,或者使用DataBuffer:double[]buffer=((DataBufferDouble)my image.getRaster().getDataBuffer()).getData()访问像素值