2010年01月29日

JavaでBMPをJPEGに

200個くらいあるBMPファイルをJPEGに変換しないといけない用があったので、試しにJavaでやってみる。

javax.imageio.ImageIOを使用すると、BMP、JPEG、GIF、PNGなんかを手軽に扱える。

BufferedImage image = ImageIO.read(bmpFile);
ImageIO.write(image, "jpeg", new File(jpgFilePath));
と書くだけで変換できる。今回は書いてないけど、画像に線引いたりもできる。

というわけで、ディレクトリ配下のBMPファイルを全部JPEGに変換するとても簡易なコード。


// バージョン1.6

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

import javax.imageio.ImageIO;

public class Test4 {

public static void main(String[] args) throws Exception {

// 下記で指定したディレクトリ配下のbmpを変換する
String dirName = "img";
File dir = new File(dirName);

// 対象フォルダの下にjpgというディレクトリを掘って、
// そこにJPEGに変換したファイルを展開することにする
String jpgDirName = dirName + "/jpg";
File jpgDir = new File(jpgDirName);
if( !jpgDir.mkdir() && !jpgDir.exists() ) {
System.out.println("フォルダ作成できんかった");
return;
}

// ディレクトリの中を探索
for( File file : dir.listFiles() ) {
String name = file.getName();

// ファイル以外は処理しない
if( !file.isFile() )
continue;
// 拡張子がbmp以外のファイルは処理しない
if( !name.matches(".*\\.bmp") )
continue;

// 保存するファイルのパス
String jpgFilePath = jpgDirName + "/" +
name.substring(0, name.length() - 4) + ".jpg";

// 画像を読み込んでJPEGで出力
BufferedImage image = ImageIO.read(file);
ImageIO.write(image, "jpeg", new File(jpgFilePath));
}
}
}