您的位置:首页 > 编程语言 > Java开发

Java关于图像文件的相关业务处理

2011-10-27 11:32 344 查看
MySQL使用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"));

5 将java程序中的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();

}

6 将java程序中的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;

转载地址:http://hi.baidu.com/dcjob/blog/item/cd0cb809d8e43e3ce824886a.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: