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



如果我手头有一个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。在对我的原始BufferedImage对象调用getScaledInstance以获得缩小的缩略图之后,我手头只有一个java.awt.Image对象。我正在尝试获取java.awt.Image对象中的数据的字节数组。

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

最新更新