我需要使用JSP在浏览器中显示图像,但我不知道如何做到这一点。 photo.image是byte []。我怎样才能做到这一点?这是我的作业,但我不知道该怎么做: - |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Nahrát fotku</title></head>
<body>
<h2>Fotky</h2>
<jsp:useBean id="albumDAO" scope="application" type="cz.vse.javaee.album.AlbumDAO"/>
<table>
<c:forEach items="${albumDAO.photos}" var="photo">
<tr>
<td>${photo.name}</td>
<td>${photo.description}</td>
<td><img src="${photo.image}"></td>
</tr>
</c:forEach>
</table>
</body>
</html>
答案 0 :(得分:0)
Google是您的朋友,您已拥有查找答案所需的所有信息。一些快速搜索将为您提供有关如何完成任务的多个示例。让我们从您的原始帖子中搜索几句话来搜索:
jsp display image from byte array
Google的第一页结果应该为您提供足够的信息以便您开始使用。我建议查看给出的示例并将它们合并到servlet中以获取图像数据或使用bean类中的base64编码字符串(例如:How to convert image to byte array and byte array to image in Java)。保持jsp的逻辑,继续使用表达式语言(EL)来提取它。 (EL是你jsp的$ {}表示法。)
编辑:
正如所指出的,这并没有直接回答这个问题,而是我试图指出答案可以通过简单的搜索轻松获得。我试图指出OP的方向可以帮助他们而不直接给出答案。
学习如何开发代码的一部分是反复试验。如果您不知道该怎么做,请在发布之前花点时间找到答案。在此示例中,答案可以在Google搜索的前几个结果中找到。
无论如何,我会根据引用的帖子How to convert image to byte array and byte array to image in Java发布一个答案。
正如Mr.Bool博客文章所解释的,以下代码片段将加载图像并将其转换为base64编码的字节数组。这可用于使用EL显示jsp上的图像:
public static void main(String args[]) {
try{
BufferedImage image = ImageIO.read(new File("icon.png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
byte[] res=baos.toByteArray();
String encodedImage = Base64.encode(baos.toByteArray());
System.out.println(“The encoded image byte array is shown below.Please use this in your webpage image tag.\n”+encodedImage);
}catch(Exception e) {
e.printStackTrace();
System.out.println(“Some problem has occurred. Please try again”);
}
}
}
}
要在屏幕上显示图像,您将包含类似于Mr.Bool提出的以下示例的内容:
<HTML>
<HEAD>
<TITLE>csanuragjain</TITLE>
</HEAD>
<BODY>
<img src="data:image/png;base64,PASTE THE BYTE ARRAY HERE WHICH IS OBTAINED FROM JAVA PROGRAM" alt="IMG DESC">
</BODY>
</HTML>
现在。要在bean类中使用,您需要创建一个方法,执行main方法中列出的相同逻辑并返回一个字符串(来自encodedImage输出)并用EL引用它。