首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

怎么将JFreeChart生成的图片转换到web页面上

2011-12-24 
如何将JFreeChart生成的图片转换到web页面上?最近工作要实现个图表分析功能碰见了这个问题求教诸位高人[解

如何将JFreeChart生成的图片转换到web页面上?
最近工作要实现个图表分析功能
碰见了这个问题
求教诸位高人

[解决办法]
去看看这个例子吧。
http://homepage.ntlworld.com/richard_c_atkinson/jfreechart/
http://homepage.ntlworld.com/richard_c_atkinson/jfreechart/jfreechart-sample.war
[解决办法]
写一个 Servlet,在 doGet() 中生成 JFreeCart 的图表,再做以下设置

OutputStream out = response.getOutputStream();
response.setContentType( "image/jpeg ");
// out,是一个OutputStream;
// chart,是你生成的 JFreeChart 类的对象
// 后面两个是图片的大小
ChartUtilities.writeChartAsJPEG(out, chart, 400, 300);

或使用 ChartUtilities.writeChartAsPNG,要将 response.setContentType 设为 “image/png”。


配置一下 web.xml,加上这一 Servlet,在页面中将 <img> 的src属性设为该 Servlet 的 URL,就可以显示该图表了。
[解决办法]
<%@ page contentType= "text/html;charset=UTF-8 "%>
<%@ page import= "org.jfree.data.general.DefaultPieDataset "%>
<%@ page import= "org.jfree.chart.* "%>
<%@ page import= "org.jfree.chart.plot.* "%>
<%@ page import= "org.jfree.chart.servlet.ServletUtilities "%>
<%@ page import= "org.jfree.chart.labels.StandardPieToolTipGenerator "%>
<%@ page import= "org.jfree.chart.urls.StandardPieURLGenerator "%>
<%@ page import= "org.jfree.chart.entity.StandardEntityCollection "%>
<%@ page import= "java.io.* "%>

<HTML>
<HEAD>
<META http-equiv=Content-Type content= "text/html; charset=GBK ">
<META NAME= "Author " CONTENT= "Alpha ">
<TITLE> test </TITLE>
</HEAD>
<BODY>
<%
DefaultPieDataset data = new DefaultPieDataset();

data.setValue( "test1 ",380);
data.setValue( "test2 ",8904);
data.setValue( "test3 ",6100);
data.setValue( "test4 ",1620);
data.setValue( "test5 ",3520);
data.setValue( "test6 ",180);

PiePlot3D plot = new PiePlot3D(data);

JFreeChart chart = new JFreeChart( " ",JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setBackgroundPaint(java.awt.Color.white);
chart.setTitle( "测试 ");
plot.setToolTipGenerator(new StandardPieToolTipGenerator());
StandardEntityCollection sec = new StandardEntityCollection();
ChartRenderingInfo info = new ChartRenderingInfo(sec);
PrintWriter w = new PrintWriter(out);

String filename = ServletUtilities.saveChartAsJPEG(chart,500,300,info,session);
ChartUtilities.writeImageMap(w, "img01 ", info, false);

String graphURL = request.getContextPath() + "/servlet/MyChart?filename= " + filename;
%>

<P ALIGN= "CENTER ">
<img src= " <%= graphURL %> " width=500 height=300 border=0 usemap= "#img01 ">
</P>
<p align= "center "> 测试日期 2007-07-05, 仅供参考 </p>
</BODY>
</HTML>

参考这个小例子
[解决办法]
请参考以下代码:

import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;


import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class JFreeChartTest {


public static void main(String[] args) throws IOException{
CategoryDataset dataset = getDataSet();
JFreeChart chart = ChartFactory.createBarChart3D( "产品销售图 ", // 图表标题
"产品名称 ", // 目录轴的显示标签
"产品销量 ", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);

FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream( "D:\\fruit1.jpg ");
ChartUtilities.writeChartAsJPEG(fos_jpg,0.5f,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "A ", "苹果 ");
dataset.addValue(200, "A ", "梨子 ");
dataset.addValue(300, "A ", "葡萄 ");
dataset.addValue(400, "A ", "香蕉 ");
dataset.addValue(500, "A ", "荔枝 ");
return dataset;
}
/**
* 获取一个演示用的组合数据集对象
* @return
*/
private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京 ", "苹果 ");
dataset.addValue(100, "上海 ", "苹果 ");
dataset.addValue(100, "广州 ", "苹果 ");
dataset.addValue(200, "北京 ", "梨子 ");
dataset.addValue(200, "上海 ", "梨子 ");
dataset.addValue(200, "广州 ", "梨子 ");
dataset.addValue(300, "北京 ", "葡萄 ");
dataset.addValue(300, "上海 ", "葡萄 ");
dataset.addValue(300, "广州 ", "葡萄 ");
dataset.addValue(400, "北京 ", "香蕉 ");
dataset.addValue(400, "上海 ", "香蕉 ");
dataset.addValue(400, "广州 ", "香蕉 ");
dataset.addValue(500, "北京 ", "荔枝 ");
dataset.addValue(500, "上海 ", "荔枝 ");
dataset.addValue(500, "广州 ", "荔枝 ");
return dataset;
}
}

热点排行