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

时间:2017-05-11 09:42:36

标签: java javafx-8

我正在尝试将图片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("Byte1: "+buffer);System.out.println("Byte2: "+buffer);然后输出如下:

enter image description here

激活buffer之前和之后的getPixels是相同的,这意味着buffer中没有存储像素。我该怎么做才能通过getPixels方法存储像素。我是否误解了什么?

参考

[1] Pure JavaFX: convert Image to bytes Array (+ opposit operation). What's wrong?

0 个答案:

没有答案