将java.awt.Image对象转换为字节数组(`byte []`)

时间:2019-10-28 00:13:02

标签: java arrays image javax.imageio

如果手头有一个java.awt.Image对象,如何获取图像数据的字节数组?


如果我有子类BufferedImage,我可以这样做:

ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
ImageIO.write( thumbnail , "jpeg" , baos ) ;
baos.flush();
final byte[] bytes = baos.toByteArray() ;

…其中ImageIO.write采用RenderedImage —由BufferedImage实现但不是其超类java.awt.Image实现的接口。

很遗憾,我没有BufferedImageRenderedImage。在我的原始getScaledInstance对象上调用BufferedImage以获取缩小的thumbnail图像后,手头只有一个java.awt.Image对象。我试图获取该java.awt.Image对象中数据的字节数组。

1 个答案:

答案 0 :(得分:0)

您可以创建一个新的BufferedImage对象,然后通过在其上调用.getGraphics()来获取其图形对象,然后使用该图形对象上的.drawImage将图像绘制到其中,并且然后将BufferedImage转换为PNG或JPG。

相关问题