【发布时间】:2011-07-04 09:32:25
【问题描述】:
我有一个场景,我需要显示表格(使用 JTable 生成)将其转换为 png 图像,然后使用 servlet 显示它们。
以下是servlet中显示表格的代码:
{
table = u.generateTableChart("datamonth");
saveToServlet(table, table.getTableHeader(), p_resp);
}
void saveToServlet(JTable table, JTableHeader header,
HttpServletResponse p_resp)
{
int w = Math.max(table.getWidth(), header.getWidth());
int h = table.getHeight() + header.getHeight();
OutputStream out = null;
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();
header.paint(g2);
g2.translate(0, header.getHeight());
table.paint(g2);
g2.dispose();
try {
p_resp.setContentType("image/png");
out = p_resp.getOutputStream();
ImageIO.write(bi, "png", out);
} catch (IOException ioe) {
System.out.println("write: " + ioe.getMessage());
}
}
当我尝试在网页上查看它时,这似乎引发了这个错误 图像错误太多,无法显示。
我可以将文件存储在临时位置,并且可以查看图表。
对于使用 JFreeCharts 生成的图表,我正在使用这个:
ServletOutputStream out = null;
try {
out = p_resp.getOutputStream();
p_resp.setContentType("image/png");
chart=u.genarateLineChart(m_martiniInstance);
ChartUtilities.writeChartAsJPEG(out, chart, 625, 500);
}
还是不走运
提前致谢, 八卦
【问题讨论】:
-
您的服务器在哪个平台(Windows、Linux)上?
-
@SJuan tomcat 服务器在 RHEL 上
-
@Bhavya:你确定图片是 RGB 格式的吗?如果您生成的图像不适合屏幕使用,通常会发生此错误。
-
您可以尝试下载文件而不是查看它吗?我记得在使用从 Linux 控制台启动的 java 图形库时遇到了一些麻烦,因为 X 库没有加载。
标签: java swing servlets jfreechart