use*_*004 5 jsp bufferedimage image
我想转换BufferedImage为将在JSP页面上显示的图像.我怎样才能做到这一点?
Bal*_*usC 11
首先,JSP是一种视图技术,提供编写HTML/CSS/JS的模板,以及与后端Java代码交互以控制页面流和访问后端数据的能力.你的问题更多的是HTML.
现在,要在HTML页面中显示图像,您需要HTML <img>元素.要定义/分配图像,只需让src属性指向URL即可.例如
<img src="url/to/image.jpg">
Run Code Online (Sandbox Code Playgroud)
(它可以是相对于当前上下文,也可以是绝对URL,例如以...开头http://)
如果图像是动态的,就像你的情况一样,你需要有一个Servlet监听url-pattern匹配图像URL的图像.例如
<img src="imageservlet/image.jpg">
Run Code Online (Sandbox Code Playgroud)
(这里显然要映射servlet /imageservlet/*,图像标识符,这里是文件名,在这里可用request.getPathInfo())
该<img src>会触发一个GET请求,所以你只需要执行doGet()这个servlet的方法.要发送一个HTTP响应所有你需要做的就是写一些内容到OutputStream响应的,有一组表示内容响应头沿(Content-Type,Content-Length和/或Content-disposition).你可以ImageIO#write()用来写BufferedImage一个OutputStream.
您可以在此处找到此类图像servlet的基本示例.你只需要更换Files#copy()同ImageIO#write().
response.setContentType("image/png");
ImageIO.write(bufferedImage, "png", response.getOutputStream());
Run Code Online (Sandbox Code Playgroud)
您无需转换 BufferedImage为Image在jsp页面上显示它.因为,Java 6 JAXB提供javax.xml.bind.DatatypeConverter.printBase64Binary(byte[]) String将byte []转换为base 64字符串.所述基座64串可以使用被显示<img 的HTML通过指定源数据作为标签base 64即src="data:image/jpg; 下面是引用的示例程序这篇文章.
sample.jsp(测试通过):
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.io.*"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
BufferedImage bImage = ImageIO.read(new File("/home/visruth/Desktop/Visruth.jpg"));//give the path of an image
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( bImage, "jpg", baos );
baos.flush();
byte[] imageInByteArray = baos.toByteArray();
baos.close();
String b64 = javax.xml.bind.DatatypeConverter.printBase64Binary(imageInByteArray);
%>
<div>
<p>As of v6, Java SE provides JAXB</p>
<img src="data:image/jpg;base64, <%=b64%>" alt="Visruth.jpg not found" />
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
IMO,这种方法非常适合小尺寸的图像<img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" alt="thumbnail" height="200">.否则使用图像的直接网址将在src属性中很好,例如: -<img src="uri-of-image/profile-pic.jpg" width="600" alt="No Profie Pic" height="600">
| 归档时间: |
|
| 查看次数: |
22556 次 |
| 最近记录: |