我正在尝试将图片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);
然后输出如下:
激活buffer
之前和之后的getPixels
是相同的,这意味着buffer
中没有存储像素。我该怎么做才能通过getPixels
方法存储像素。我是否误解了什么?
参考
[1] Pure JavaFX: convert Image to bytes Array (+ opposit operation). What's wrong?