gpt4 book ai didi

java - 如何使用 Java 和 PostgreSQL 在 Web 应用程序中保存、检索和绘制图像?

转载 作者:行者123 更新时间:2023-11-29 11:57:47 25 4
gpt4 key购买 nike

给定一个对象X;我希望这个对象有一个图像。图像必须存储在数据库中。我无法存储路径,实际图像必须在数据库中。

我的问题可以通过回答以下子问题来回答:

一个)。我应该在数据库中放入什么类型的字段? (例如 VARCHAR)

b) 我应该使用什么类型的对象来存储和操作图像(在对象层)? (例如 java.awt.Image)

c) 如何根据从数据库获得的数据创建所选类型(问题 b 的答案)的对象?

d) 如何将所选类型的对象(问题 b 的答案)保存到数据库?

e) 如何在网页上绘制图像?

我正在使用 PostgreSQL、Java,它是一个网络应用程序。

谢谢!

最佳答案

a) What type of field should I put in the database? (e.g VARCHAR)

图像是二进制数据。只需使用二进制字段。在 PostgreSQL 中它是 bytea .

b) What type of object should I use for storing and manipulating the image (at an object layer)? (e.g java.awt.Image)

使用 InputStream byte[]存储它。 Java 2D API 具有可以采用/返回这些类型中的任何一种的类/方法。

c) How do I create an object of the type selected (answer of question b) from the data obtained from the database?

使用 ResultSet#getBinaryStream() 得到一个InputStream它或 ResultSet#getBytes() 得到 byte[]

d) How do I save an object of the type selected (answer of question b) to the database?

使用 PreparedStatement#setBinaryStream() PreparedStatement#setBytes() .注意:如果您不熟悉 JDBC/PreparedStatement还有,那么我建议你自己通过 Sun basic JDBC tutorial .

e) How do I draw the image on a web page?

使用 HTML <img> src 的元素指向与 url-pattern 匹配的 URL的 Servlet .您可以将图像标识符作为请求参数或路径信息传递。 Servlet里面你只需写出获得的InputStreamOutputStream以通常的 Java IO 方式响应。您可以在 this answer 中找到代码示例我前段时间发过。


也就是说,在数据库中存储 原始图像通常不是一个好主意。您最好还存储一些元数据,例如 content type (例如 image/jpegimage/gif 等)您毕竟需要在响应 header 中,以便浏览器知道如何处理它。

关于java - 如何使用 Java 和 PostgreSQL 在 Web 应用程序中保存、检索和绘制图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2842151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com