Pessoal,
Como poderia fazer para gerar imagens no meu ManagedBean dinamicamente ?
Eu fiz a imagem sendo gerada em um servlet, mas como estou usando JSF acredito que seja mais correto gerar isso no managedBean certo ? então como fazer isso ???
Veja abaixo como fiz usando o servlet:
Página: index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%--
This file is an entry point for JavaServer Faces application.
--%>
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<h1><h:outputText value="Imagens Dinamicas"/></h1>
<p />
<h:graphicImage id="imagem" value="http://localhost:8084/JsfServlet/novo?nome=marcelo" />
</body>
</html>
</f:view>
Servlet: novo.java
package servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class novo extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String s = (request.getParameter("nome"));
response.setContentType("image/png");
OutputStream os = response.getOutputStream();
try {
int width = 200, height = 200;
BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = buffer.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.drawLine(0, 0, width, height);
Font font = new Font("Courier", Font.BOLD, 30);
g.setColor(Color.BLUE);
g.setFont(font);
g.drawString(s, 0, 20);
ImageIO.write(buffer, "png", os);
} finally {
os.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Obrigado,
Marcelo Gomes