【问题标题】:Displaying byte array as an image in a JSP在 JSP 中将字节数组显示为图像
【发布时间】:2014-03-14 18:29:09
【问题描述】:

我有一个 Servlet,我已将它指定为我的 Java Web 应用程序的欢迎页面。在 Servlets doGet 方法中,我从数据库中检索 Product 对象列表。 Product 对象由以下部分组成:ID、名称、描述和图像(byte[])。

然后,我将产品列表作为属性添加到请求中,并转发到我想要显示所有产品的 JSP(在表格中)。显示名称、id 和描述等属性很容易。

我的问题是,我不确定如何显示图像。有什么想法吗?

【问题讨论】:

    标签: image jsp servlets


    【解决方案1】:

    您需要对图像数据进行 base 64 编码并生成如下所示的数据 url:

    data:image/png;base64,21fe8w4r7qwe/f4sd68f4/er41we5f1sd/1a3/13dfvd21

    类似这样的代码可以解决问题:

    String url = "data:image/png;base64," + Base64.encode(bytes);
    

    然后将该网址用作您的图片src

    【讨论】:

    • 所以如果图像是 jpg 我只使用 'image/jpg'?
    • 这正是你所做的。
    • 好的,至于把它放到数据库中,我必须先对字节数组进行base64编码,对吧,为了让base64编码在我得到它时工作?
    • 您可以在放入之前或取出之后进行 base 64 编码。有起有落。如果在放入之前进行编码,则占用的内存比原始图像略多。如果在取出后对其进行编码,则会牺牲性能/速度,因为每次检索都必须这样做。
    • 好的,所以我不一定要在放入之前对其进行编码?我问是因为我运行了应用程序,但没有看到任何图像显示,也没有出现错误。所以我认为这可能与编码有关。我肯定在数据库中看到了 blob,所以它就在那里,只需将其取出即可。
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2021-11-17
    • 1970-01-01
    • 2012-03-16
    相关资源
    最近更新 更多