当前位置: 首页 > 面试题库 >

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

华心思
2023-03-14
问题内容

我正在研究项目,但遇到了一些问题,我进行了搜索,但是找不到完整的学习资源,我需要使用我的Java程序将图像存储在SQL
Server数据库中,并且需要使用“返回检索”,图像的大小不大,它们介于30到50
K之间,我可以使用toolKit中的getImage()方法从磁盘加载图像

Image imm = Toolkit.getDefaultToolkit().getImage("URl");

,但我不知道如何将该图像转换为二进制格式并存储在数据库中,然后从数据库中检索回来。我想通过查看几个站点将其存储在VarBinary中,我发现SQL
Server中的图像类型即将退役。


问题答案:

虽然在数据库中存储很大的二进制对象不是一个好主意,但是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);


 类似资料:
  • 问题内容: 如何在MySQL数据库中存储和显示图像。到目前为止,我只编写了从用户那里获取图像并将其存储在文件夹中的代码,而到目前为止,我编写的代码是: HTML FILE PHP文件 问题答案: 我找到了答案,对于那些在这里寻找相同事物的人,我是怎么做的。您不应该考虑将图像上传到数据库,而是可以将上传文件的名称存储在数据库中,然后检索文件名,并在要显示图像的任何位置使用它。 HTML代码 PHP代

  • 问题内容: 我有一个图像存储为二进制斑点的模型。我想在模板中显示此图像以及有关对象的其他数据。由于该图像不是单独的文件,因此我不知道如何显示它。我尝试设置标题,或使用或,但我要么不获取图像,要么 仅 获取图像,而不获取模板的其余部分。如何在模板中将二进制斑点显示为图像? 问题答案: 图像存储为字节。使用base64对其进行编码,并将其作为数据URI插入呈现的HTML中。您可以将对象及其编码的图像都

  • 问题内容: 我有一个数字,我想以二进制形式打印。我不想通过编写算法来做到这一点,Java中是否有任何内置函数? 问题答案: 假设你的意思是“内置”: 请参阅整数文档。 (Long具有类似的方法,具有可在其中指定基数的实例方法。)

  • 本文向大家介绍ASP.NET实现图片以二进制的形式存入数据库,包括了ASP.NET实现图片以二进制的形式存入数据库的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式讲述了ASP.NET实现图片以二进制的形式存入数据库的方法。过去我们都是直接在数据库中存入图片文件名的,还没有试过存储整张图片到数据库中,经过一番资料查询与测试,整理出了如下的功能代码: 1.建立保存图片的表的SQL语句: 2.下

  • 问题内容: 我正在尝试将图像存储在SQL Server数据库中,应该使用哪种数据类型? 在下面的内容中,我试图从请求输入流中读取所有字节并将其存储在数据库中,但是该数组在表中未正确更新。我想念什么吗? 问题答案: 您可以使用“是”。您最好去存储它们。 您可以像这样使用它:

  • 问题内容: 在数据库中存储图像的常用方法是在存储数据之前将图像转换为数据。此过程将使大小增加33%。或者,可以将图像直接存储为;例如: 然后用 使用后一种方法,我们可以节省1/3的存储空间。为什么像在MySQL数据库中那样存储图像更常见? 更新: 关于将图像存储在数据库中的优点和缺点的争论很多,大多数人认为这不是一种实用的方法。无论如何,在这里我假设我们将图像存储在数据库中,并讨论了这样做的最佳方