如何用java将mysql数据库中存储的Blob类型的数据读取并转成图片并保存
时间: 2024-02-13 20:05:06 浏览: 87
abc123lzf#notebook#Struts2+Hibernate 读取数据库存储有图片的Blob并将图片显示到前台页面1
可以使用以下代码将MySQL数据库中存储的Blob类型的数据读取并转换为图片并保存到本地:
```java
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class BlobToImage {
public static void main(String[] args) {
try {
// 1. 加载MySQL JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 2. 创建数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
// 3. 创建PreparedStatement对象
PreparedStatement ps = conn.prepareStatement("SELECT image FROM images WHERE id=?");
// 4. 设置参数
ps.setInt(1, 1);
// 5. 执行查询
ResultSet rs = ps.executeQuery();
// 6. 处理结果集
if (rs.next()) {
// 7. 读取Blob类型的数据
Blob blob = rs.getBlob("image");
// 8. 将Blob类型的数据转换为InputStream
InputStream inputStream = blob.getBinaryStream();
// 9. 将InputStream转换为BufferedImage
BufferedImage image = ImageIO.read(inputStream);
// 10. 保存图片到本地
File outputfile = new File("output.png");
ImageIO.write(image, "png", outputfile);
}
// 11. 关闭资源
rs.close();
ps.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
注:上述代码中的 `mydatabase` 应该替换为你的数据库名称,`username` 和 `password` 应该替换为你的数据库用户名和密码。另外需要替换SQL语句中的表名和字段名。保存的图片路径和格式可以根据需要进行修改。
阅读全文