に変換する方法のBufferedImageのイメージを表示JSP
-
19-09-2019 - |
質問
ように変換 BufferedImage
画像を表示するJSPのページです。たいのですが実現。
解決
第一に、JSPを示すものである技術を提供するテンプレートを書HTML/CSS/JS、とコミュニケーションするバックエンドのJavaコードの制御フローページにアクセスバックエンドデータです。お客様の問題点があります。
現在は、画像を表示するHTMLページとクレジットカードが必要ですHTML <img>
要素になります。を定義する/配分の画像は、かないのではないかと思うの src
属性をます。E.g.
<img src="url/to/image.jpg">
(それでなければならないと規定されての対比での現在のコンテキスト、または絶対URL、例えばはじめ http://
)
の場合は画像はダイナミックなど、お客様が必要となりま Servlet
を耳に url-pattern
マッチング画像のURL。E.g.
<img src="imageservlet/image.jpg">
(ここではサーブレットは明らかをマッピングに /imageservlet/*
の画像の識別子を、こちらのファイル名は、こちらのご利用による request.getPathInfo()
)
の <img src>
ま火GETリクエストですぐに実施 doGet()
方法をリストアップされます。送HTTPリダイレクトのHTTPレスポンスだけは書き込むコンテンツの OutputStream
の対応とともに、セットの応答ヘッダを代表するコンテンツ(Content-Type
, Content-Length
および/または Content-disposition
).利用できる ImageIO#write()
書く BufferedImage
へ OutputStream
.
きの基本例のような画像をサーブレット こちらの.るためには、ただひたすらに交換 Files#copy()
と ImageIO#write()
.
response.setContentType("image/png");
ImageIO.write(bufferedImage, "png", response.getOutputStream());
参照:
他のヒント
あなたはのJSP のページに表示するBufferedImage
するImage
を変換する必要はありません。なぜなら、Java 6のJAXBはベース64の文字列にのバイト[] を変換するjavax.xml.bind.DatatypeConverter.printBase64Binary(byte[]) String
を提供します。 ベース64文字列はは<img
すなわちbase 64
ように、ソースデータを指定してsrc="data:image/jpg
のHTMLのタグを使用して表示することができる;.こちらされますを投稿してください。
の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>
IMO、このアプローチは<img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="200" alt="thumbnail" height="200">
のような小さなサイズの画像に最適です。そうでない場合は、画像のダイレクトURLを使用すると、例えばsrc
属性で罰金になります: - <img src="uri-of-image/profile-pic.jpg" width="600" alt="No Profie Pic" height="600">