JSP在生成BuffereImage后以html显示图像
我有一个java类从一个随机字符串生成一个图像,当我单独运行时,java代码运行良好,图像保存在本地目录中 现在我创建了一个用于注册的简单JSP表单,如何在htmlJSP在生成BuffereImage后以html显示图像,jsp,bufferedimage,Jsp,Bufferedimage,我有一个java类从一个随机字符串生成一个图像,当我单独运行时,java代码运行良好,图像保存在本地目录中 现在我创建了一个用于注册的简单JSP表单,如何在html“alt=”image not found“/>中显示图像 java(单独运行良好,能够生成输出) 包转换; 导入java.awt.Color; 导入java.awt.Font; 导入java.awt.FontMetrics; 导入java.awt.Graphics2D; 导入java.awt.RenderingHints; 导入
“alt=”image not found“/>中显示图像
java(单独运行良好,能够生成输出)
包转换;
导入java.awt.Color;
导入java.awt.Font;
导入java.awt.FontMetrics;
导入java.awt.Graphics2D;
导入java.awt.RenderingHints;
导入java.awt.image.buffereImage;
导入java.util.Random;
导入java.util.Scanner;
公共类引用{
专用最终整数字符串长度=10;
公共缓冲区映像stringToImage(){
//参考资料来源:http://stackoverflow.com/questions/18800717/convert-text-content-to-image
扫描仪阅读器=新扫描仪(System.in);
字符串imageText=“”;
对于(int count=0;count
生成图像并在jsp上显示的任何替代方法?您可以在jsp中使用
。只要saved.png位于web应用程序上下文根目录中
另一种方法是创建一个servlet来处理动态图像生成(无需保存到硬盘)。然后在jsp中,您会将servlet引用为图像的src。仔细阅读以下内容:@BalusC如果我理解正确-您反对将文件保存在上下文根目录中。但正如您所看到的,我建议改为使用servlet…但是如果作者保留原始设计(非正统或非正统)-否则他将如何显示他的图像。您的文件创建代码工作正常。但是,您创建了保存的.png文件,浏览器无法获取该文件。您在文件构造函数中使用了相对路径。根据API,该文件是在“调用Java虚拟机的目录”中创建的。在Tomcat中,即它的bin文件夹中。
<%@page import="javax.imageio.ImageIO"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="convert.references"%>
<%@page import="java.io.*, java.util.*"%>
<html>
<head>
<title>Echoing HTML Request Parameters</title>
</head>
<body>
<h3>Registering user...</h3>
<form method="get">
Please enter your Username:
<input type="text" name="username"/><br>
Please enter your Email:
<input type="text" name="email"><br>
Please enter your Security Question:
<input type="text" name="qn"><br>
Please enter your Security Answer:
<input type="text" name="ans"><br>
Please enter your Recovery Password:
<input type="password" name="pass"><br>
<input type="submit" value="Enter">
</form>
<%
String username = request.getParameter("username");
String email = request.getParameter("email");
String qn = request.getParameter("qn");
String ans = request.getParameter("ans");
String pass = request.getParameter("pass");
if (username != null) {
references test = new references();
BufferedImage image = test.stringToImage();
File outputfile = new File("saved.png");
ImageIO.write(image, "png", outputfile);
%>
<h3>Your details:</h3>
<ul>
<li><%= username %></li>
<li><%= email %></li>
<li><%= qn %></li>
<li><%= ans %></li>
<li><%= pass %></li>
<li><img src="<%= outputfile%>" alt="Image not found" /></li>
</ul>
<a href="<%= request.getRequestURI() %>">BACK</a>
<%
}
%>
</body>
</html>
package convert;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.util.Random;
import java.util.Scanner;
public class references {
private final int stringLength = 10;
public BufferedImage stringToImage(){
//reference from: http://stackoverflow.com/questions/18800717/convert-text-content-to-image
Scanner reader = new Scanner(System.in);
String imageText = "";
for(int count = 0; count < stringLength; count++){ //consisting of 8 value
Random rand = new Random(); //randomly selected
int randomNumber = rand.nextInt(10); //of 1-9
imageText += randomNumber; //one number at a time for 8 times
}
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
Font font = new Font("Arial", Font.PLAIN, 48);
g2d.setFont(font);
FontMetrics fm = g2d.getFontMetrics();
int width = fm.stringWidth(imageText);
int height = fm.getHeight();
g2d.dispose();
img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
g2d = img.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
g2d.setFont(font);
fm = g2d.getFontMetrics();
g2d.setColor(Color.BLACK);
g2d.drawString(imageText, 0, fm.getAscent());
g2d.dispose();
/*try{
File outputfile = new File("saved.png");
ImageIO.write(img, "png", outputfile);
} catch (IOException e) {}*/
return img;
}
}