数据库(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;