こんばんは、id:maku693です。Go言語の練習としてimgresという画像リサイズツールを作ってみました。Goの標準ライブラリにGIF, JPEG, PNGのエンコーダー・デコーダーがあるのでそれを使っています。
入力ファイル名、出力画像の幅か高さ、出力ファイル名を指定すると、縦横比を保ったまま画像をそのサイズに収まるようにリサイズし、入力画像と同じフォーマットで保存します。
$ imgres -in gtsport.jpg -width 200 -out gtsport300.jpg
入出力ファイル名の指定は必須ではなく、指定がなかった場合は標準入出力を利用します。
$ imgres -width 100 < cornellbox.png > cornellbox100.png
こだわりポイントは指定された幅・高さと元画像の縦横比が異なる場合に、画像全体を収める (contain) か、はみ出させる (cover) か切り替えられる機能です。縦横比が異なる画像をたくさん扱うときに便利です。デフォルトでは収まるようにリサイズします。
$ imgres -in gtsport.jpg -width 150 -height 200 -fit cover -out gtsport150x200.jpg
アニメーションGIFにも対応しています。実は素朴に image パッケージのインタフェースを使うだけではアニメーションGIFに対応できなかったので、フォーマットに応じてデコード・エンコードの仕組みを差し替えるようになっています(この辺は別でまた記事にしようと思います)。
imgres -in partyneopanda.gif -width 20 -out partyneopanda20.gif
ぜひご利用ください。