`
quanwei132
  • 浏览: 1868 次
  • 性别: 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  
图片存数据库, 这个设计。。。值得思考。
再说了, 你求教的话, 也把异常栈给出来吧, 谁知道你出什么问题了。

相关推荐

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...

    图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片)

    本示例主要涉及的是如何将图片通过BASE64编码加密后存入数据库的Blob类型字段,并能从数据库中取出这些数据再还原成原始图片。以下是相关知识点的详细说明: 1. **BASE64编码**:BASE64是一种用于将二进制数据转换...

    批量导出ORACLE数据库BLOB字段生成图片

    Oracle数据库在存储大对象...总之,批量导出Oracle数据库中的BLOB字段生成图片涉及到了数据库连接、SQL查询、BLOB数据处理和文件I/O等多个技术环节。掌握这些知识点对于管理和维护包含二进制数据的数据库系统至关重要。

    java对oracle数据库中blob字段的处理

    在IT领域,尤其是在Java开发与Oracle数据库交互的过程中,处理BLOB(Binary Large Object)类型字段是一项常见且重要的任务。BLOB字段主要用于存储大量的二进制数据,如图像、音频、视频或任何其他非文本格式的数据...

    java中读取ORACLE中BLOB字段存储的图片

    例如,在Oracle数据库中创建一张名为`t_wlsgry`的表,并包含一个`BLOB`类型的字段`zp`用于存储图片数据。 3. **图片数据准备**: - 准备一些图片文件,并将其插入到数据库表中。这可以通过SQL语句或者使用Java程序...

    Java读取数据库中blob字段并插入到另一个表中

    可以从数据库中读取blob字段并插入到另一个表中,已经测试通过

    kettle通过java代码将数据库blob 字段抽取到本地文件

    kettle通过java代码将数据库blob 字段抽取到本地文件

    java中sqllite数据库blob数据类型的存取.docx

    以下是一个完整的Java程序示例,用于向SQLite数据库中插入一个文件(作为BLOB类型),然后从中读取并恢复该文件。 ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream...

    从mysql数据库中批量下载Blob图片到本地

    本教程将深入探讨如何在Java环境下,批量地从MySQL数据库中下载存储在Blob字段中的图片,并将其保存到本地文件系统。 首先,我们需要理解Blob类型。Blob是MySQL中的一个数据类型,用于存储大量二进制数据。它分为四...

    批量导出ORACLE数据库BLOB字段生成文件

    本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...

    Mybatis 处理 CLOB、BLOB 类型数据

    MyBatis 提供了对 CLOB 和 BLOB 类型的内置支持,通过将 CLOB 类型映射到 Java 的 String 类型,BLOB 类型映射到 byte[] 类型。 在使用 MyBatis 时,需要在实体类中定义对应的字段类型,例如: ```java public ...

    java将图片写入数据库,并读出来(blob clob)

    要从数据库读取图片,你需要执行一个SELECT查询,获取Blob对象,然后将其转换回图片文件。 ```java ResultSet rs = stmt.executeQuery("SELECT imageData FROM images WHERE id = ?"); if (rs.next()) { Blob ...

    oracle中的BLOB(照片)转换到mysql中

    首先,创建一个包含BLOB字段的新表或者更新已有表结构。例如: ```sql CREATE TABLE mysql_photos ( id INT PRIMARY KEY, photo BLOB ); ``` 然后,通过类似的方法,读取本地文件并将其内容插入到MySQL的BLOB...

    jsp操作mysql数据库的blob字段

    在这个场景中,我们关注的是如何使用Java Server Pages(JSP)来操作MySQL数据库中的Blob(Binary Large Object)字段,这是一个用于存储大容量二进制数据如图片、文档或音频文件的特殊字段类型。以下是关于这个主题...

    java读取大字段blob类型

    示例代码中使用了一个名为`DbConnection`的类来管理数据库连接。 ```java DbConnection conn = new DbConnection(); Connection cc = conn.BlobDbConnection(); ``` 2. **设置事务控制**:为了确保数据的一致性...

    java file upload BLOB

    - 然后,将图片文件的内容读取到内存中,并通过 JDBC 的 `setBlob` 方法保存到数据库的 BLOB 字段中。 - 图片的上传可以通过 HTML 表单结合 Java Servlet 或其他框架如 Spring MVC 来实现。 - **图片显示**: - ...

    图片存入Oracle中,用clob和blob两种方式

    例如,可以创建一个`IMAGES`表,包含`ID`(主键)、`IMAGE_CLOB`(CLOB类型)和`IMAGE_BLOB`(BLOB类型)字段。 - **图片转二进制/字符串**:对图片进行读取,如果是使用`CLOB`,需要将图片转换为Base64字符串;...

    实现图片直接以blob的形式直接存入数据库

    4. 数据库操作:在数据库层面,我们需要一个支持BLOB类型的表结构来存储图片。SQL语句如`CREATE TABLE images (id INT PRIMARY KEY, imageData BLOB)`会创建一个可以存储图片的表。存储时,使用PreparedStatement将...

Global site tag (gtag.js) - Google Analytics