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_DSystem.out.println(Arrays.toString(buffer))例如,code>(或者如果不需要全部内容,只需使用循环并显示前几个元素)