Go言語で複数の画像を一括で縮小するプログラム作った
2017/03/11
ちょっと前にこんなブログ書きましたが、
はてなブックマークでいろいろ意見をもらい、逆にモチベーションが上がってきました。
なんか作れないかなと思い描いていたところ、デジカメで撮った写真をブログに載せる際、手作業で1枚1枚画像をブログ用に縮小していたことを思い出しました。
画像縮小のバッチ処理は、以前、PHPで作ったことありますが、Go言語は速いとの評判なので、このような画像処理には向いているんじゃないかと思いまして。
※アイキャッチ画像に自作Gopher君を載せていますが、Gopherの原著作者はRenée French氏です。
[ad#top-1]
どんなものを作ったかというと
実行ファイル(ImgSizeChanger.exe)と同じフォルダ内に複数の画像ファイルが置いてあります。いずれもサイズが大きく、画像幅で3000px以上、ファイルサイズで1.4MB程度のものです。こんな画像ファイルをサーバーにアップするなんてたまりません。
ImgSizeChanger.exeを実行すると、縮小したいファイルサイズを聞いてきます。あくまで幅サイズの指定のみです。この例では900pxとしておきましょう。
Enterキー押下とともに処理が開始します。さすがに1枚の縮小に数秒くらいかかりました。終わると以下のように縮小された画像ファイルが現れます。50KBまで小さくなりました。
わかりにくいですが、きちんと指定サイズに縮小できましたよ。
ソースコード
このプログラムの制作にあたっては、以下のwebページを参考にしました。
画像リサイズにはライブラリgithub.com/nfnt/resizeを使います。ダウンロードしてGOPATHフォルダ内に置きます。
で、こちらがソースコードです。指定した縮小サイズ以下の画像は処理をスキップしてくれます。
jpegファイルのみの処理ですが、同じ要領でpngも可能らしいです。僕の場合はデジカメ画像がjpegなので、これだけで事足ります。
1枚の画像処理に1秒くらいかかるようですが、これが早いか遅いかは他の言語と比べていないので何とも言えません。(まあ評判通り早いのでしょう)
こんな感じでGUIにするまでもないような処理をGoで作っていきつつ習得していこうと思います。
[ad#ad-1]
スポンサーリンク