如果我手头有一个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
实现的接口。
不幸的是,我没有BufferedImage
或RenderedImage
。在对我的原始BufferedImage
对象调用getScaledInstance
以获得缩小的缩略图之后,我手头只有一个java.awt.Image
对象。我正在尝试获取java.awt.Image
对象中的数据的字节数组。
您可以创建一个新的BufferedImage
对象,然后通过在该对象上调用.getGraphics()
来获取其图形对象,然后在图形对象上使用.drawImage
将图像绘制到其中,然后将BufferedImage转换为PNG或JPG。