JPEGファイルの品質を設定

広告

画像として出力する場合にJPEG形式の場合は品質を合わせて設定する事が出来ます。品質を下げることでファイルサイズを小さくすることが出来ます。

「saveChartAsJPEG」メソッドを使います。前のページで使用したのと同じメソッド名ですが引数が異なります。

Saves a chart to a file in JPEG format.

Parameters:
  file - the file (null not permitted).
  quality - the JPEG quality setting.
  chart - the chart (null not permitted).
  width - the image width.
  height - the image height. 
Throws:
  java.io.IOException - if there are any I/O errors.

引数に「quality」が追加されており、品質を設定します。設定できる値は「0.0f」から「1.0f」までのfloat型の数値で「1.0f」を指定した時が一番品質がよくサイズも大きくなります。

実際の使い方は次のようになります。

DefaultPieDataset data = new DefaultPieDataset();
JFreeChart chart = 
  ChartFactory.createPieChart("Title", data, true, false, false);

File file = new File("./filename.jpeg");
try {
  ChartUtilities.saveChartAsJPEG(file, 1.0f, chart, 300, 300);
} catch (IOException e) {
  e.printStackTrace();
}

サンプルプログラム

では簡単なサンプルを作成して試してみます。

Test2_1.java

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.data.general.DefaultPieDataset;

import org.jfree.chart.ChartUtilities;
import java.io.File;
import java.io.IOException;

public class Test2_1{
  public static void main(String[] args) {
    DefaultPieDataset data = new DefaultPieDataset();
    data.setValue("1個", 20);
    data.setValue("2個", 45);
    data.setValue("3個", 10);
    data.setValue("4個", 8);
    data.setValue("その他", 17);

    JFreeChart chart = 
      ChartFactory.createPieChart("金メダル予想", data, true, false, false);

    File file1 = new File("./test2_1.jpeg");
    File file2 = new File("./test2_2.jpeg");
    try {
      ChartUtilities.saveChartAsJPEG(file1, 1.0f, chart, 400, 300);
      ChartUtilities.saveChartAsJPEG(file2, 0.3f, chart, 400, 300);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

JPEGファイルの品質を設定

実行後下記の2つのJPEG画像が出力されています。

JPEGファイルの品質を設定

JPEGファイルの品質を設定

上の画像が品質に「1.0f」を指定した場合でファイルサイズは「37,850byte」、下の画像が品質に「0.3f」を指定した場合でファイルサイズは「8,753byte」となっています。

( Written by Tatsuo Ikura )