A menudo vemos algunas imágenes actualizadas dinámicamente en las páginas web, la más común de las cuales es el gráfico de líneas K de acciones. Este artículo intenta utilizar un ejemplo simple para mostrarle cómo llamar a JavaBean a través de JSP para generar dinámicamente un histograma en la página web. .
Antecedentes: Cuando estaba desarrollando un proyecto para una oficina de estadísticas recientemente, estuve involucrado en el problema de generar imágenes dinámicamente en una página web. Me tomó un día y finalmente lo resolví para ayudar a todos a evitar desvíos al encontrar el problema. El mismo problema en el futuro, ahora publicaré las ideas de diseño y el código fuente para que todos puedan compartir. El siguiente código se probó con éxito en Windows 2000 y el servidor de aplicaciones web utiliza Jrun3.0 de Allaire.
Paso 1: Cree un Java Bean para generar archivos jpg.
El programa fuente es el siguiente:
//Java Bean para generar imágenes.
//Autor: Cui Guanyu
//Fecha:2001-08-24
importar java.io.*;
importar java.util.*;
importar com.sun.image.codec.jpeg.*;
importar java.awt.image.*;
importar java.awt.*;
clase pública ChartGraphics {
Imagen almacenada en búfer;
public void createImage(String fileLocation) {
intentar {
FileOutputStream fos = nuevo FileOutputStream(fileLocation);
BufferedOutputStream bos = nuevo BufferedOutputStream(fos);
Codificador JPEGImageEncoder = JPEGCodec.createJPEGEncoder(bos);
codificador.codificar(imagen);
bos.cerrar();
} captura (Excepción e) {
System.out.println(e);
}
}
generación de gráficos vacíos públicos (int h1, int h2, int h3, int h4, int h5) {
final int X=10;
int imageWidth = 300; //El ancho de la imagen int imageHeight = 300; //La altura de la imagen int columnWidth=30; //El ancho de la columna int columnHeight=200
; chartGraphics = new ChartGraphics();
chartGraphics.image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
Gráficos gráficos = chartGraphics.image.getGraphics();
gráficos.setColor(Color.blanco);
gráficos.fillRect(0,0,anchoimagen,altoimagen);
gráficos.setColor(Color.rojo);
gráficos.drawRect(X+1*anchocolumna, alturacolumna-h1, anchocolumna, h1);
gráficos.drawRect(X+2*anchocolumna, alturacolumna-h2, anchocolumna, h2);
gráficos.drawRect(X+3*anchocolumna, alturacolumna-h3, anchocolumna, h3);
gráficos.drawRect(X+4*anchocolumna, alturacolumna-h4, anchocolumna, h4);
gráficos.drawRect(X+5*anchocolumna, alturacolumna-h5, anchocolumna, h5);
chartGraphics.createImage("D:\temp\chart.jpg");
}
}
Explicación: El método createImage(String fileLocation) se usa para crear una imagen JPG. El parámetro fileLocation es la ruta del archivo.
El método GraphicsGeneration(int h1, int h2, int h3, int h4, int h5) se usa para dibujar el contenido. de la imagen. Los parámetros h1...h5 Paso 2 para la altura de cada rectángulo
: cree otro Java Bean para leer datos del archivo de texto (la altura de cada rectángulo, los datos se almacenan en Oracle). base de datos
El programa fuente es el siguiente:
//Leer el archivo de texto Java Bean para obtener datos.
//Autor: Cui Guanyu
//Fecha:2001-08-24
importar java.io.*;
clase pública GetData {
int heightArray[] = nuevo int[5];
público int[] getHightArray() {
intentar {
RandomAccessFile randomAccessFile = nuevo RandomAccessFile ("d:\temp\ColumnHeightArray.txt","r");
para (int i=0;i<5;i++)
{
heightArray[i] = Integer.parseInt(randomAccessFile.readLine());
}
}
captura (Excepción e) {
System.out.println(e);
}
devolver matriz de altura;
}
}
Explicación: getHightArray() se usa para leer datos de texto, convertir el tipo String en el texto a tipo int y devolverlo como un tipo de matriz.
Paso 3: cree el
programa fuente del archivo JSP de la siguiente manera:
<%@ página import="ChartGraphics" %>
<%@ importación de página="GetData" %>
<jsp:useBean id="cg" class="ChartGraphics"/>
<jsp:useBean id="gd" class="GetData"/>
<%!
int altura[]=nuevo int[5];
%>
<%
altura=gd.getHightArray();
cg.graphicsGeneration(altura[0],altura[1],altura[2],altura[3],altura[4]);
%>
<html>
<cuerpo>
<img src="d:tempchart.jpg"></img>
</cuerpo>
</html>
Explicación: JSP primero llama a Bean (GetData..class) para leer los datos del archivo, luego llama a Bean (ChartGraphics.class) para generar la imagen y finalmente muestra la imagen.
Conclusión: dado que los datos en el texto (ColumnHeightArray.txt) pueden cambiar en cualquier momento, la altura de los cinco rectángulos en la imagen generada cambia en consecuencia, logrando así la generación dinámica de la imagen. Esta idea de diseño también se puede utilizar para realizar. Sistema de votación de sitios web.