画像を切り抜くコマンドをJavaで作った
Macで、コマンドラインから呼び出して画像を切り抜くやつが欲しかったんだけど、何かを追加でインストールするのがイヤだったので悩んだ。悩んだ結果Javaで書いてみた。
// Resizer.java import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class Resizer { public static void main(String[] args) throws IOException { String inFile = args[0]; int x = Integer.parseInt(args[1]); int y = Integer.parseInt(args[2]); int w = Integer.parseInt(args[3]); int h = Integer.parseInt(args[4]); String outFile = args[5]; BufferedImage input = ImageIO.read(new File(inFile)); BufferedImage output = input.getSubimage(x, y, w, h); ImageIO.write(output, "PNG", new File(outFile)); } }
以下でコンパイル。
$ javac -J-Dfile.encoding=UTF-8 Resizer.java
「-J-Dfile.encoding=UTF-8」は文字化け対策。必須ではないけど、これを付けないとコンパイルエラーだったときに表示されるメッセージが読めない。
そして実行。
$ java Resizer input.jpg 100 200 300 400 output.png
コマンドラインオプションが6個ある。
- 入力ファイル
- 切り抜き開始X座標
- 切り抜き開始Y座標
- 切り抜く幅
- 切り抜く高さ
- 出力ファイル
画像の形式は、入力は何でも良いけど出力はpng。
これで、input.jpgの(100, 200)の位置から、300x400で切り抜いた画像がoutput.pngとして保存される。
ダメだった
動作としては問題なく動いたけど、ダメだった。
まあいいや
ってことで、せっかく書いたけど使ってない。
残念。でも、BufferedImage#getSubimage なんていう便利なのがあるのは知らなかったので、その点がちょっとだけ勉強になったからいいや。