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));
}
}
}