【问题标题】:Show Multiple BufferedImage in jsp在jsp中显示多个BufferedImage
【发布时间】:2013-03-19 21:10:59
【问题描述】:

我在 ArrayList 中有 100 个 BufferedImage 对象,我想在 jsp 中显示所有这些图像。

<%
  ArrayList<BufferedImage> list = GlobalData.getImageBufferArrayList();
%>

 </head>
 <body>
 <ul>
 <li><img alt="" src=""> </li>//image1
 <li><img alt="" src=""> </li>//image2
 <li><img alt="" src=""> </li>//image3
   ...
   ..
   ...
 </ul>
</body>

我不知道在这些图片上添加什么src

是否可以将图像数据作为图像的src。(就像我们在html中从canvas获取图像数据一样)

或者是他们展示这些图像的任何体面方式。

【问题讨论】:

  • 您可以将图像名称/路径保存在字符串数组中,然后在“for”循环中编写
  • 我的磁盘上没有图像
  • 您需要一个单独的 servlet,其标题内容类型为 image/png 或 jpg 或 gif。此 servlet 获取缓冲图像并将其输出。在每个 src 属性中让 src='servlet?img=NUMBER' 其中 NUMBER 是数组列表中每个图像的索引。
  • 标签: java image jsp bufferedimage


    【解决方案1】:

    您要么必须将图像文件嵌入到 HTML 文档中,要么通过单独的 HTTP 请求使其可用。对于前者,您可以使用data: URI scheme。对于后者,您必须提供一个单独的 servlet,或者在同一个 servlet 中提供一个单独的代码路径,它将为图像文件提供服务。它可能会从一些短期缓存中执行此操作,因此您不必再次执行相同的代码来获取这些图像。

    通常,嵌入数据的大小开销与图像大小成正比,而单独的请求具有与 HTTP 请求数成正比的资源开销。对于小图像,前者可能会更好,而对于大图像,后者会更快。实现嵌入应该比实现合理的图像缓存更容易,但我不能 100% 确定是否所有浏览器都支持数据方案。

    在任何一种情况下,您都必须先将BufferedImage 序列化为某个字节序列,可能将ImageIO.writeByteArrayOutputStream 结合使用。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签