ユーザーが一部のデータをエクスポートできる JSP があります。さまざまな形式 (excel、csv) を選択できます。また、Excel を使用すると、データに対応するグラフ (円グラフ、折れ線グラフ、棒グラフ) がエクスポートされます。ユーザーは、グラフを一意の jpg ファイルにエクスポートしたいと考えています。
私がしたことは(すべてJavaで)です:
- JFreeChart を使用してチャートを生成する
- ChartUtilities.saveChartAsJPEG を使用してチャートを JPG 画像に変換します。
- 次に、画像バイトを取得します。
コード:
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 を開くと、画像が 1 つしか表示されないことです。各グラフのエクスポートをテストし、うまく動作しましたが、すべてのグラフ バイトを配置すると、1 つの画像 (常に imageBytes 配列の最初) のみが表示されます。
ある種のキャンバスを作成する必要があるのか 、それともこの方法で同じJPGに3つ以上の画像を配置できないのかわかりません。