java 二进制 数据库_使用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 you

ImageIO.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);

2020-09-28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值