【问题标题】:Java - Insert Byte Array/ImageIcon directly into HTMLJava - 将字节数组/ImageIcon 直接插入 HTML
【发布时间】:2012-02-03 08:46:12
【问题描述】:

我正在尝试直接从数据库中获取一个字节数组并将其放入采用 HTML 的工具提示中。这是为了保持一致性,因为需要包含与其他纯文本工具提示匹配的文本。

理想情况下,在将图像加载到 img src 标签之前,我会尝试绕过将图像保存到文件的步骤。有没有办法将字节数组(可以很容易地预先转换为 Image 或 ImageIcon)直接加载到 HTML 中?

【问题讨论】:

  • 你在哪里提供这个?使用 JSP、servlet 等,您可以发送从数据库中提取的数据作为响应,并在 img 的 'src' 属性中放置一个适当的 URL 来请求它。
  • 通过一个servlet 到一个applet,加载为一个字节数组。然后使用此图像制作缩略图,我正在尝试使用原始图像(更大)作为全尺寸工具提示。
  • 因此,只需制作一个图像服务 servlet,将其映射到适当的 URL 即可。
  • 这似乎浪费了带宽。无论如何,我已经将图像加载到内存中,试图查看是否有办法将其直接植入 HTML 以避免再次调用它......
  • 带宽成本是相同的,因为在这两种情况下每次加载 HTML 页面时都会加载它;唯一的解决方案是将其保存到文件中,以便浏览器对其进行缓存。

标签: java html image imageicon


【解决方案1】:

制作一个图像服务 servlet,将其映射到适当的 URL,然后从数据库中转储图像数据。

编辑:顺便说一下,您可以使用这种方法让浏览器缓存图像,但您需要手动完成。

【讨论】:

    【解决方案2】:

    您需要以某种方式将字节转换为 base64 编码(在 java 端或 html/javascript 端)。然后你可以写这样的东西:

    <img src="data:image/gif;base64,R0lGODlhUAAPAKIAAAsLav///88PD9WqsYmApmZmZtZfYmdakyH5BAQUAP8ALAA AAABQAA8AAAPbWLrc/jDKSVe4OOvNu/9gqARDSRBHegyGMahqO4R0bQcjIQ8E4BMCQc930JluyGRmdAAcdiigMLVrpTYWy5FKM1IQe+Mp+L4rphz+qIOBAUYeCY4p2tGrJZeH9y79mZsawFoaIRxF3JyiYxuHiMGb5KTkpFvZj4ZbYeCiXaiKBwnxh4fnt9e3ktgZyHhrChinONs3cFAShFF2JhvCZlG5uchYNun5eedRxMAF15XEFRXgZWWdciuM8GCmdSQ84lLQY5R14wDB5Lyon4ubwS7jx9NcV9/j5+g4JADs=" alt="" width="80" height="15" />
    

    请注意,在这种情况下,即使您保存了获取图像的请求,图像本身也不会被缓存以供将来使用。 你可以看看这个: http://www.websiteoptimization.com/speed/tweak/inline-images/

    寻找解决方法。

    【讨论】:

    • 我尝试加载的图像大约为 600x600,对于 URI 编码来说可能太大了。
    • 最大大小为 32kb。如果这还不够,您可以调整图像大小或将其转储到文件中。
    • 您还可以拥有一个图像服务,可以根据数据库中的数据随意提供、缩放、调整大小、着色您的图像。
    • @NicolasModrzyk 你是从哪里拿到这个号码的? AFAIK 没有这样的限制,32kB 只是 IE8 支持不佳的限制。
    • @Viruzzo:完全同意。 32KB 限制仅适用于 IE8。
    猜你喜欢
    • 2012-10-18
    • 2018-03-02
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 2015-05-24
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多