CompressJPEGTest.java



/**
 * JPEGファイルの圧縮率を変えて保存する実験
 */
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;

public class CompressJPEGTest {

  /** 最初に呼び出されるメソッド */
    public static void main( String argv[] ) {

        Raster raster;            // Rasterのオブジェクト
        FileInputStream input;    // 入力元
        FileOutputStream output;  // 出力先
        JPEGImageDecoder decoder; // Rasterへのロードを行う
        JPEGImageEncoder encoder; // Rasterからの出力を行う
        JPEGDecodeParam dparam;    // 入力元のJPEGパラメータ
        JPEGEncodeParam eparam;    // 出力先のJPEGパラメータ

        try {
            input = new FileInputStream( argv[0] );
            decoder = JPEGCodec.createJPEGDecoder( input );
            raster = decoder.decodeAsRaster(); // Raster にロード
            dparam = decoder.getJPEGDecodeParam();

            output = new FileOutputStream( argv[1] );
            encoder = JPEGCodec.createJPEGEncoder( output );
            eparam = JPEGCodec.getDefaultJPEGEncodeParam( dparam );
            eparam.setQuality( 0.5f, false );      // 画質を落とす指定
            encoder.setJPEGEncodeParam( eparam );  // パラメータ情報を設定
            encoder.encode( raster );              // ファイルに保存
        }
        catch( Exception e ){
            System.err.println( e.toString() );
            System.exit(-1);
        }
    }
}