我們經常要在網頁看到一些動態更新的圖片
最常見的莫過於股票的K線圖
本文試圖通過一個簡單的實例
向大家展示如何通過JSP 調用JavaBean在網頁上動態生成柱狀圖
背景
本人最近在為某統計局開發項目時
涉及到在網頁上動態生成圖片的問題
費了一天的時間
終於搞定
為幫助大家在以後遇到同樣的問題時不走彎路
現將設計思想及源代碼公布出來
與大家共勉
以下代碼在Windows
成功測試通過
Web應用服務器采用Allaire公司的Jrun
第一步
創建一個Java Bean用來生成jpg文件
源程序如下
//生成圖片的 Java Bean
//作者:崔冠宇
//日期:
import java
io
*;
import java
util
*;
import dec
jpeg
*;
import java
awt
image
*;
import java
awt
*;
public class ChartGraphics {
BufferedImage image;
public void createImage(String fileLocation) {
try {
FileOutputStream fos = new FileOutputStream(fileLocation);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec
createJPEGEncoder(bos);
encoder
encode(image);
bos
close();
} catch(Exception e) {
System
out
println(e);
}
}
public void graphicsGeneration(int h
int h
int h
int h
int h
) {
final int X=
;
int imageWidth =
;//圖片的寬度
int imageHeight =
;//圖片的高度
int columnWidth=
;//柱的寬度
int columnHeight=
;//柱的最大高度
ChartGraphics chartGraphics = new ChartGraphics();
chartGraphics
image = new BufferedImage(imageWidth
imageHeight
BufferedImage
TYPE_INT_RGB);
Graphics graphics = chartGraphics
image
getGraphics();
graphics
setColor(Color
white);
graphics
fillRect(
imageWidth
imageHeight);
graphics
setColor(Color
red);
graphics
drawRect(X+
*columnWidth
columnHeight
h
columnWidth
h
);
graphics
drawRect(X+
*columnWidth
columnHeight
h
columnWidth
h
);
graphics
drawRect(X+
*columnWidth
columnHeight
h
columnWidth
h
);
graphics
drawRect(X+
*columnWidth
columnHeight
h
columnWidth
h
);
graphics
drawRect(X+
*columnWidth
columnHeight
h
columnWidth
h
);
chartGraphics
createImage(
D:\temp\chart
jpg
);
}
}
解釋
createImage(String fileLocation)方法用於創建JPG圖片
參數fileLocation為文件路徑
graphicsGeneration(int h
int h
int h
int h
int h
)方法用於繪出圖片的內容
參數h
……h
為每一個長方形的高度
第二步
創建另一個Java Bean從文本文件中讀取數據(每一個長方形的高度)
在實際應用中數據存儲在Oracle數據庫中
源程序如下:
//讀取Text文件中數據的 Java Bean
//作者:崔冠宇
//日期:
import java
io
*;
public class GetData {
int heightArray[] = new int[
];
public int[] getHightArray() {
try {
RandomAccessFile randomAccessFile = new RandomAccessFile (
d:\temp\ColumnHeightArray
txt
r
);
for (int i=
;i<
;i++)
{
heightArray[i] = Integer
parseInt(randomAccessFile
readLine());
}
}
catch(Exception e) {
System
out
println(e);
}
return heightArray;
}
}
解釋
getHightArray()用於從文本中讀取數據
將文本中的String類型轉換為int類型
並以數組類型返回
第三步
創建JSP文件
源程序如下
<%@ page import=
ChartGraphics
%>
<%@ page import=
GetData
%>
<jsp:useBean id=
cg
class=
ChartGraphics
/>
<jsp:useBean id=
gd
class=
GetData
/>
<%!
int height[]=new int[
];
%>
<%
height=gd
getHightArray();
cg
graphicsGeneration(height[
]
height[
]
height[
]
height[
]
height[
]);
%>
<html>
<body>
<img src=
d: empchart
jpg
></img>
</body>
</html>
解釋:JSP首先調用Bean (GetData
class)讀取文件中的數據
再調用Bean(ChartGraphics
class)生成圖片
最後顯示圖片
結束語
由於文本(ColumnHeightArray
txt)中的數據可以隨時變化
因此生成的圖片中的
個長方形的高度是隨之變化的
從而實現了圖片的動態生成
該設計思想還可以用於制作網站的投票系統
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26207.html