`
quanwei132
  • 浏览: 1816 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
文章分类
社区版块
存档分类
最新评论

java中 查询一个表的 图片字段(blob类型) 处理图片大小后保存到数据库

阅读更多
在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);

分享到:
评论
1 楼 sdh5724 2010-12-29  
图片存数据库, 这个设计。。。值得思考。
再说了, 你求教的话, 也把异常栈给出来吧, 谁知道你出什么问题了。

相关推荐

Global site tag (gtag.js) - Google Analytics