我有一个允许用户导出一些数据的 JSP。您可以选择不同的格式(excel、csv)。此外,用excel导出与数据对应的图表(饼图、折线图和条形图)用户希望将图表导出为唯一的jpg文件。
我所做的是(全部在 Java 中):
- 使用 JFreeChart 生成图表
- 使用以下命令将图表转换为 JPG 图像:ChartUtilities.saveChartAsJPEG
- 然后我检索图像字节:
编码:
InputStream is = null;
try {
is = new FileInputStream(image);
}catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] bytes = null;
try {
bytes = IOUtils.toByteArray(is);
}catch (IOException e) {
e.printStackTrace();
}
这很好用,我有每个图表的字节。然后我将每个图表的字节放入一个字节数组中:
byte[] imageBytes = getImageAsBytes(chart1,chart2,chart3);
res.setContentType("image/jpg");
res.setHeader("Content-Disposition", "attachment; filename=" + "MyCharts" + ".jpg");
res.setContentLength(imageBytes.length);
try{
OutputStream output = res.getOutputStream();
output.write(imageBytes);
output.flush();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
问题是:当我打开 JPG 时,只显示一张图像。我测试了每个图表的导出并且效果很好,但是当我放置所有图表字节时,只显示一个图像(始终是 imageBytes 数组中的第一个)
我不知道我是否必须创建某种画布,或者无法通过这种方式将 3 张或更多图像放在同一个 JPG 中。