浏览 3443 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-29
最后修改:2010-12-29
判断该图片大小,如果大于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); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-29
图片存数据库, 这个设计。。。值得思考。
再说了, 你求教的话, 也把异常栈给出来吧, 谁知道你出什么问题了。 |
|
返回顶楼 | |