一気にいろんなサイズの画像を用意したい場合があります。アプリのアイコンとか、そんなにこだわらないのに、いろいろなサイズ用意しないとエラーがでる場合とか、一気にいろんなサイズをリサイズしたいことが多くあります。

Rhino/JavaScriptを利用して、一気にいろいろなアイコンサイズを作成するスクリプトは、以下の通り。

「source-icon.png」という名前で大き目のサイズのアイコンを作ってください。そして、Rhinoのjarファイルを用意します。

// 作成サイズ
var sizes = [128,48,38,19,16];
var SOURCE_ICON = "source-icon.png";

// JavaのクラスをJavaScriptで使いやすく宣言
var ImageIO = javax.imageio.ImageIO;
var Image = java.awt.Image;
var FileInputStream = java.io.FileInputStream;
var BufferedImage = java.awt.image.BufferedImage;

// 画像一覧を読み込みリサイズ
var img = loadImage(SOURCE_ICON);
for (var i = 0; i < sizes.length; i++) {
  var sz = sizes[i];
  var img2 = resize(img, sz, sz);
  var fname = "icon" + sz + ".png";
  ImageIO.write(img2, "png", new java.io.File(fname));
}
print("ok");
// ---
// 画像を読み込む
function loadImage(fname) {
  var fis = new FileInputStream(fname);
  return ImageIO.read(fis);
}
// 画像をリサイズ
function resize(image, dw, dh) {
  var thumb = new BufferedImage(dw, dh, image.getType());
  var im = image.getScaledInstance(
    dw, dh, Image.SCALE_AREA_AVERAGING);
  thumb.getGraphics().drawImage(im,
    0, 0, dw, dh, null);
  return thumb;
}

上記を「auto-resize.js」という名前で保存します。そして、プログラムを実行するには、コマンドラインから以下のように入力します。

java -jar ./js.jar auto-resize.js