画像形式変換2
- 画像形式変換の続き。jai: Java Advanced Imaging Parent Projectを使わなくても、javax.imageioで簡単にできます。mixiで教えて貰いました。ビバmixi!
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、JPEG、TIFF、PNG、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/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を使ってみてはいかがでしょうか。