在java中 查询一个表的 图片字段(blob类型)
判断该图片大小,如果大于100K,那么就把该图片处理成100K
我现在做到获取该图片
但是 处理图片大小遇到了问题
出现错误的地方:src = javax.imageio.ImageIO.read(inputStream);
我的代码如下
package com.hinge.tools;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.hinge.eis.db.DataAccess;
import com.hinge.eis.db.DataAccessOra;
public class ImageDx {
public static void main(String[] args) {
DataAccess dataccess = new DataAccessOra();
Connection conn = dataccess.getConnection();
PreparedStatement ps2 = null;
PreparedStatement stmt = null;
ResultSet rs2 = null;
try {
conn.setAutoCommit(false); // 第一步:插入一个空的CLOB
String sql2 = "select PHOTO,PERSON_ID from hr_person where rownum >=1 and rownum <2order by person_id for update ";
ps2 = conn.prepareStatement(sql2);
stmt = conn.prepareStatement(sql2);
rs2 = ps2.executeQuery();
String personid=null;
stmt =conn.prepareStatement("update hr_person set photo =empty_blob() where person_id =?");
while (rs2.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs2.getBlob("PHOTO");
personid = rs2.getString("PERSON_ID");
stmt.setString(1,personid);
stmt.executeUpdate();
stmt.close();
//String content = out.toString();
InputStream input =blob.getBinaryStream();
OutputStream os = blob.getBinaryOutputStream();
BufferedOutputStream output = new BufferedOutputStream(os);
float f=100;
String content = processImage(input,f);
// 写,向数据库写图片
OutputStream out = null;
int blobsize = (int)content.length();
byte[] blobbytes = new byte[blobsize];
int bytesRead = 0;
out.write(blobbytes, 0, blobsize);
os.close();
out.close();
input.close();
}
stmt.executeBatch();
conn.commit();
if (stmt != null)
stmt.close();
if (rs2 != null)
rs2.close();
if (ps2 != null)
ps2.close();
if (conn != null)
conn.close();
} catch (Exception e) {
try {
conn.rollback();
} catch (Exception ex) {
e.printStackTrace();
}
e.printStackTrace();
}
finally{
try {
if (stmt != null)
stmt.close();
if (rs2 != null)
rs2.close();
if (ps2 != null)
ps2.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private static String processImage(InputStream inputStream, float tagsize) {
try {
java.awt.Image src = null;
if (inputStream == null) {
} else
src = javax.imageio.ImageIO.read(inputStream);
if (src == null)
return null;
// float tagsize = 200;
int old_w = src.getWidth(null); //
int old_h = src.getHeight(null);
int new_w = 0;
int new_h = 0; //
float tempdouble = old_w / tagsize;
if (tempdouble < 1)//
tempdouble = (float) 1.0;
new_w = Math.round(old_w / tempdouble);
new_h = Math.round(old_h / tempdouble);//
BufferedImage tag = new BufferedImage(new_w, new_h,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); //
return tag.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
出现错误的地方:src = javax.imageio.ImageIO.read(inputStream);
分享到:
相关推荐
java,Blob字段操作,将图片或者文件保存到数据库中.zip
图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片),完整的demo例子,可运行。
可以从数据库中读取blob字段并插入到另一个表中,已经测试通过
kettle通过java代码将数据库blob 字段抽取到本地文件
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
java中读取ORACLE中BLOB字段存储的图片
java对oracle数据库中blob字段的处理
Mybatis 处理 CLOB、BLOB 类型数据
该包内类实现了从数据库查询数据存到本地硬盘中格式为EXCEL,并且通过页面下载该EXCEL,下载完毕后,删除查询的Excel文件。
简单写的一个小工具,把图片存入oracle中,按clob和blob两种方式存储,并读取图片
软件特点:可通过操作面板扫描本地文件夹,导入数以千万的文件数据,进行统一压缩,以 BLOB 类型存储在一个 SQLite 数据库文件中,迁移(备份)数据时能极大提升文件复制速度。支持将资源数据库中的文件数据发布成 ...
15.1.3 使用可滚动ResultSet创建一个搜索页面 15.2 使用XSL从SQL查询中创建网页 15.2.1 XSLT如何工作 15.2.2 从数据库中检索的数据作为XML文档 15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 ...
首先是数据库建立要准备的: 我们要把放置二进制字段设置为Blob类型,根据文件的大小选择合适的Blob类型,一下是各个Blob类型所能容纳二进制文件的大小 MySQL的四种BLOB类型 类型 大小(单位:字节) TinyBlob 最大 ...
15.1.3 使用可滚动ResultSet创建一个搜索页面 15.2 使用XSL从SQL查询中创建网页 15.2.1 XSLT如何工作 15.2.2 从数据库中检索的数据作为XML文档 15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 ...
15.1.3 使用可滚动ResultSet创建一个搜索页面 15.2 使用XSL从SQL查询中创建网页 15.2.1 XSLT如何工作 15.2.2 从数据库中检索的数据作为XML文档 15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 ...
15.1.3 使用可滚动ResultSet创建一个搜索页面 15.2 使用XSL从SQL查询中创建网页 15.2.1 XSLT如何工作 15.2.2 从数据库中检索的数据作为XML文档 15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 ...
完整通过JAVA读写ORACLE中CLOB、BLOB字段的方法,提供数据库连接池的方法
mybatis 对clob类型转换,解决clob类型数据插入数据库报异常问题