我有一個JSP允許用戶導出一些數據。你可以選擇不同的格式(excel,csv)。另外,用excel導出與數據對應的圖表(餅圖,折線圖和條形圖)用戶想要將圖表導出爲獨特的jpg文件。在一個JPG文件中導出多個圖像
我所做的是(全部在Java中):
- 使用JFreeChart的
- 生成圖表使用圖表轉換成JPG圖片:ChartUtilities.saveChartAsJPEG
- 然後我找回theimage字節:
代碼:
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數組中的第一個圖像)
我不知道是否需要創建某種或者僅僅是不可能通過這種方式在相同的JPG中放置3張或更多圖像。
如果您正在討論將多個圖像放入一個文件內的單獨隔間中,則JPEG不支持此操作。您將需要使用TIFF。 – 2012-08-03 14:11:18