画像形式変換2

package info.smoochy.jaisample;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class ImageConverter {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            BufferedImage bufferedImage = ImageIO.read(new File("D:\\temp\\sample.jpg"));
            ImageIO.write(bufferedImage, "png", new File("D:\\temp\\conv.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

javax.imageioは以下の形式をサポートしています。

読み込み

書き込み

でも、なんかこう腑に落ちない。これでできるんだったら、ImageTranscoderってなんのためにあるんだろう?
で、まぁ色々調べてたらJIMIというのもあって、GIF、JPEGTIFFPNG、PICT、フォトショップBMP、Targa、ICO、CUR、Sunraster、XBM、XPM、およびPCXをサポートしているらしいです。正直聞いたこともないフォーマットもありますが。
コードサンプルはこんな感じ。

package info.smoochy.jaisample;

import java.awt.Image;

import com.sun.jimi.core.Jimi;
import com.sun.jimi.core.JimiException;

public class JIMIImageConverter {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            Image image = Jimi.getImage("D:\\temp\\sample.jpg");
            Jimi.putImage(image, "D:\\temp\\conv2.gif");
        } catch (JimiException e) {
            e.printStackTrace();
        }
        
    }

}

ちなみに上記のプログラムは落ちます。JIMIはgifの書込みをサポートしていないからです。
JIMIがサポートしている形式は以下。

書き込み

  • image/x-xbm
  • image/xbm
  • image/x-jpg
  • image/jpg
  • image/jpeg
  • image/pict
  • image/bmp
  • image/x-bmp
  • image/x-jpeg
  • image/x-cmu-raster
  • image/psd
  • image/x-psd
  • image/x-pict
  • image/pcx
  • image/x-pcx
  • image/x-tga
  • image/tga
  • image/xpm
  • image/x-xpm
  • image/png
  • image/x-png
  • image/cmu-raster

読み込み

  • image/x-xbm
  • image/xbm
  • image/ico
  • image/x-ico
  • image/gif
  • image/x-gif
  • image/x-jpg
  • image/jpg
  • image/x-targa
  • image/tiff
  • image/jpeg
  • image/pict
  • image/x-tiff
  • image/bmp
  • image/x-bmp
  • image/x-jpeg
  • image/x-cmu-raster
  • image/x-psd
  • image/psd
  • image/x-pict
  • image/x-pcx
  • image/pcx
  • image/cur
  • image/x-cur
  • image/x-xpm
  • image/xpm
  • image/png
  • image/x-png
  • image/targa
  • image/cmu-raster

これらはJimi#getEncoderTypes及びJimi#getDecoderTypesで取得できます。
携帯端末等のお仕事で「どうしてもGIF! 」という方はgif-pluginを使ってみてはいかがでしょうか。