java_的image 和 BufferedImage 和 byte[] 相互转换

=

=

 

一、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

java 中 image 和 byte[] 相互转换

 

=

=

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值