Java 采用字节流操作图片

数据库(MySql、oracle等)使用Blob数据类型存储图像,java (1.6)现在支持bmp,jpg, wbmp, png, gif格式的图像。

1从数据库中Blob转为java程序中的Image类实体:

java.sql.Blob blob = rs.getBlob("Logo");
InputStream fin = blob.getBinaryStream();
Image im = javax.imageio.ImageIO.read(fin);

2从数据库中Blob转存为硬盘中的图像文件:

java.sql.Blob blob = rs.getBlob("Logo");
InputStream fin = blob.getBinaryStream();
//
用文件模拟输出流
File file = new File("d:\\output.gif");
OutputStream fout = new FileOutputStream(file);
//
BLOB数据写入文件
byte[] b = new byte[1024];
int len = 0;
while ((len = fin.read(b)) != -1) {
fout.write(b, 0, len);
}

3将磁盘中图像文件存入数据库的BLOB字段中(使用Bytes):

FileInputStream fis = new FileInputStream(“D:\\logo.gif”);
byte[] b = new byte[65000];//
限制图像体积小于65KB
fis.read(b);
rs.updateBytes("Logo", b);

Bytes数组转为Image

BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray));

4将磁盘中文件转为java程序中的Image类实体

Image image = Toolkit.getDefaultToolkit().getImage("D:\\logo.gif");

Image image = javax.imageio.ImageIO.read(new FileInputStream("D:\\logo.gif"));

5java程序中的Image类实体转为磁盘中文件

Image image;

.......
BufferedImage bufferedImage = (BufferedImage) image;
try {
ImageIO.write(bufferedImage, "PNG", new File("d:\\yourImageName.PNG"));//
输出到 png文件
ImageIO.write(bufferedImage, "JPEG", new File("d:\\yourImageName.JPG"));//
输出到 jpg文件
ImageIO.write(bufferedImage, "gif", new File("d:\\yourImageName.GIF"));//
输出到 gif文件
ImageIO.write(bufferedImage, "BMP", new File("d:\\yourImageName.BMP"));//
输出到 bmp文件
} catch (IOException e) {
e.printStackTrace();
}

6java程序中的Image类实体转为Byte数值后,存入数据库Blob字段中:

首先将Image实体转为BufferedImage,可以参考网上的程序,如 http://www.a3gs.com/BookViews.asp?InfoID=3111&classID=953&InfoType=0

Image image;.......

BufferedImage bi=Converter.toBufferedImage(image);

ByteArrayOutputStream baos=new ByteArrayOutputStream(1024);
ImageIO.write(bi, "jpg", baos);
baos.flush();
String base64String=Base64.encode(baos.toByteArray());
baos.close();
byte[] b = Base64.decode(base64String);
rs.updateBytes("Logo", b);

7得到屏幕中的图像:

robot = new Robot();
BufferedImage bimage = robot.createScreenCapture(new Rectangle(0, 0, 100, 100));
Image image=bimage;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值