Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 如何通过getPixels从图像中获取字节_Java_Javafx 8 - Fatal编程技术网

Java 如何通过getPixels从图像中获取字节

Java 如何通过getPixels从图像中获取字节,java,javafx-8,Java,Javafx 8,我正在尝试将图像:ImageView sentObject转换为字节数组。我在[1]中找到了转换它的方法,因此我编写了如下代码 public void sendImage(ImageView sentObject)        { PixelReader pixelReader=sentObject.getImage().getPixelReader(); int width =(int) sentObject.getImage().getWid

我正在尝试将图像:
ImageView sentObject
转换为字节数组。我在[1]中找到了转换它的方法,因此我编写了如下代码

public void sendImage(ImageView sentObject)
       {
            PixelReader pixelReader=sentObject.getImage().getPixelReader();
            int width =(int) sentObject.getImage().getWidth();
            int height =(int) sentObject.getImage().getHeight();
            byte[] buffer=new byte[width*height*4];
            System.out.println("Byte1: "+buffer);
            try
                {
                pixelReader.getPixels(0,0,width,height,PixelFormat.getByteBgraInstance(),buffer,0,width*4);
                System.out.println("Byte2: "+buffer);
                //pixel[i][j]=sentObject.getImage().getPixelReader().getColor(i,j);
                DataOutputStream out = new DataOutputStream(client.getOutputStream());
                out.write(buffer);
                out.flush();
                }
            catch(IOException IO)
                {
                IO.printStackTrace();
                }
            }
我想让你们看的重点是
getPixels
方法。此方法将图像转换为字节,并将这些字节存储在字节数组中(在我的例子中,它是
byte[]buffer
),但是当我编译并运行时,它似乎没有为我存储字节。我放入调试语句:
System.out.println(“字节1:+buffer”)
System.out.println(“字节2:+buffer”)则输出如下:


激活前后
getPixels
buffer
是相同的,这意味着
buffer
中没有存储像素。我应该如何通过
getPixels
方法存储像素。我有什么误解吗

参考文献


[1]

“激活前后的
缓冲区
getPixels
是相同的,这意味着
缓冲区中没有存储任何像素。”-嗯,没有。您只能知道它仍然是相同的数组:您根本没有查看数组的内容。我如何查看数组的内容?James_D
System.out.println(Arrays.toString(buffer))(或者如果不需要全部内容,只需使用循环并显示前几个元素)