dibujar una especie de grafica en una pag jsp

cesar
04 de Marzo del 2005
Necesito pintar una linea, con grosor, al estilo de un grafico en una pagina jsp. Los datos que tenemos son una cadena de ceros y unos, entonces cuando haya un uno pintaremos un trozo por ejemplo rojo y sino azul.
Lo que pasa es que tiene que quedar curioso (no vale pintar un cuadro rojo y luego otro azul como que fueran caracteres jeje).Me da igual hacerlo usando xsl pasandole la cadena por un XML, desde funciones en java y luego pasarlo como imagen al jsp... como sea.Tb mire si se podria utilizar la libreria cewolf pero ni idea...Alguien sabe como podria hacerse??
Gracias de antemano.

eva
04 de Marzo del 2005
Hola:

Si te enteras como pintar graficas con jsp, podrías informarme, porque yo tambien lo necesito y el cewolf tampoco ni idea.


Gracias

Sandra
04 de Marzo del 2005
Existen varias librerias las cuales se pueden usar en los jsp's, de las que he visto la más facil de usar y mas completa es ChartDirector, se puede bajar de la pagina www.advsofteng.com/download.html y ponerlo en la carpeta lib y ya se puede usar en el jsp. Ademas tiene varios ejemplos.

David
04 de Marzo del 2005
Hola

Puedes hacerte un servlet que genere como tipo de contenido "image/jpeg" o "image/png".

Al servlet le pasas como parámetro la cadena de 0s y 1s y éste genera en función de la misma una BufferedImage (esto es fácil, con los métodos gráficos lo haces en un plisplas) y utilizas la clase javax.imageio.ImageIO:

OutputStream os = response.getOutputStream();
ImageIO.write(getImage(), "PNG", os);

Y ya está. Sólo tienes que incluir la llamada al servlet en una JSP (o en un simple HTML plano, vaya) en la etiqueta <IMG>:

<IMG src="tuservlet?cadena=10001011111010000001111"/>

Simple y bello, ¿no?


Salud

David

David
04 de Marzo del 2005
Te pongo un ejemplo:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.awt.*;
import javax.imageio.*;
import java.awt.image.*;

public class GraficoSectores extends HttpServlet implements SingleThreadModel {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/jpeg");

// Recogida de parámetros de la cadena de consulta
String cadena = request.getParameter("cadena");
OutputStream os = response.getOutputStream();
ImageIO.write(getImage(cadena, 100, 100), "JPG", os);
}

public BufferedImage getImage(String cadena, int ancho, int alto) {
BufferedImage img = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB);
Graphics g = img.createGraphics();
// Hora de dibujar
// ...
g.dispose();
return img;
}
}