=
=
一、byte[] to BufferedImage to Image(或者BufferedImage)
public class BufferedImage extends java.awt.Image implements WritableRenderedImage, Transparency
可以看出BufferedImage就是Image。
byte[] byteArray = new byte[1000]; // 文档:ByteArrayInputStream(byte[] buf) // 文档:ByteArrayInputStream(byte[] buf, int offset, int length) InputStream buffIn = new ByteArrayInputStream(byteArray, 0, byteArray.length); BufferedImage bufferedImage = ImageIO.read(buffIn); Image image = (Image) bufferedImage; System.out.println(image.getGraphics());
二、Image to BufferedImage to byte[]
Image to BufferedImage:
// 获取 Image 对象的高度和宽度 int width = image.getWidth(null); int height = image.getHeight(null); BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = bi.getGraphics(); //通过 BufferedImage 绘制图像并保存在其对象中 g.drawImage(image, 0, 0, width, height, null); g.dispose();
BufferedImage to byte[ ]:
ByteArrayOutputStream bos = new ByteArrayOutputStream(); ImageIO.write(bi, "png", bos); return bos.toByteArray();
三、Image和BufferedImage 从哪里来
从文件来:
BufferedImage image = ImageIO.read(new File("1.gif"));
从内存网络等来:
public static Image getImageFromClipboard() throws Exception { Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable data = sysc.getContents(null); if (data != null) { if (data.isDataFlavorSupported(DataFlavor.imageFlavor)) { Image image = (Image) data.getTransferData(DataFlavor.imageFlavor); return image; } } return null; }
四、显示BufferedImage
public void paint(Graphics g){
super.paint(g);
g.drawImage(image,x,y,width,height,null); //image为BufferedImage类型
}
如果要自动调用paint方法,则需要调用repaint()方法;
参考好文档:
BufferedImage与byte[]互转 http://blog.csdn.net/xiazdong/article/details/6929975
=
=