LoadJPEGTest.java



/**
 * JPEGファイルから BufferedImage を生成する実験
 */
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;

/** BufferedImageを表示するキャンバス */

class BufferedImageCanvas extends Canvas {

  /** BufferedImage のオブジェクト */
    public BufferedImage image;

  /** コンストラクタ */
    public BufferedImageCanvas( BufferedImage image ) {
        super();
        this.image = image;
        setSize( image.getWidth(this), image.getHeight(this) );
    }

  /** 描画メソッド */
    public void paint( Graphics g ) {
        g.drawImage( image, 0, 0, this );
    }
}

/** JPEG画像をロードする実験 */

public class LoadJPEGTest extends Frame {

  /** 画像を表示するキャンバス */
    public BufferedImageCanvas canvas;

  /** コンストラクタ */
    public LoadJPEGTest( String name ) throws Exception {

        super( "Load JPEG Test" );
        try {
            FileInputStream input
                = new FileInputStream( name );
            JPEGImageDecoder decoder
                = JPEGCodec.createJPEGDecoder( input );
            BufferedImage image
                = decoder.decodeAsBufferedImage();
            canvas = new BufferedImageCanvas( image );

            WritableRaster raster = image.getRaster();
            SampleModel model = raster.getSampleModel();
            DataBuffer buffer = raster.getDataBuffer();
            System.out.println( model.toString() );
            System.out.println( buffer.toString() );
        }
        catch( Exception e ){
            throw e;
        }
    }

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

        try {
            LoadJPEGTest frame = new LoadJPEGTest( argv[0] ); 
            frame.add( frame.canvas, "Center" );
            frame.pack();
            frame.setVisible( true );
        }
        catch( Exception e ){
            System.err.println( e.toString() );
            System.exit(-1);
        }
    }
}