栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Java以二进制格式将图像存储在数据库中

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Java以二进制格式将图像存储在数据库中

虽然在数据库中存储很大的二进制对象不是一个好主意,但是Microsoft研究论文“
至BLOB或不至BLOB:数据库或文件系统中的大对象存储”表明,如果对象大小小于256K,这是一种有效的方法。
。因此,听起来您已经达到了3万张图像存储数据库的最佳位置。

您可以使用以下网址从URL加载图像作为缓冲图像:

BufferedImage imm = ImageIO.read(url);

然后使用以下命令将其转换为字节数组:

byte[] immAsBytes = ByteArrayOutputStream baos = new ByteArrayOutputStream();//use another encoding if JPG is innappropriate for youImageIO.write(imm, "jpg", baos );baos.flush();byte[] immAsBytes = baos.toByteArray();baos.close();

然后按照本文的建议将字节数组存储为VARBINARY数据库中。在JDBC代码中,应该将字节数组包装在ByteArrayInputStream中,并将PreparedStatement参数设置为BinaryStream:

PreparedStatement pstmt = commection.prepareStatement("INSERT INTO IMAGES (image) VALUES(?)");ByteArrayInputStream bais = new ByteArrayInputStream(immAsBytes);pstmt.setBinaryStream(1, bais, immAsBytes.length);pstmt.executeUpdate();pstmt.close();

要从数据库中取出图像,请使用ResultStatement.getBlob():

Blob immAsBlob = rs.getBlob();byte[] immAsBytes = immAsBlob.getBytes(1, (int)immAsBlob.length()));

最后,将字节数组转换为BufferedImage并对其进行处理:

InputStream in = new ByteArrayInputStream(immAsBytes);BufferedImage imgFromDb = ImageIO.read(in);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号