首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java 采取字节流操作图片

2012-09-19 
Java 采用字节流操作图片数据库(MySql、oracle等)使用Blob数据类型存储图像,java (1.6)现在支持bmp,jpg, wb

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"));

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;

?

热点排行