如果手头有一个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
。在我的原始getScaledInstance
对象上调用BufferedImage
以获取缩小的thumbnail图像后,手头只有一个java.awt.Image
对象。我试图获取该java.awt.Image
对象中数据的字节数组。
答案 0 :(得分:0)
您可以创建一个新的BufferedImage
对象,然后通过在其上调用.getGraphics()
来获取其图形对象,然后使用该图形对象上的.drawImage
将图像绘制到其中,并且然后将BufferedImage转换为PNG或JPG。