Lightroomからimagemagickを使いたいと思い、imagemagickの簡単な使い方を調べてみました。
imagemagickできる事が多岐に渡りますので、今回は自分がやりたかった次の処理を中心にまとめてみたいと思います。
- リサイズ
- ウォーターマーク(画像透かし)を重ねる
- シャープをかける
- Exifの削除
目次
Imagemagickとは?
imagemagick(イメージマジック)は、コマンドラインから動作する画像処理プログラムのことです。画像変換や複数の画像を重ねたり、シャープなどのフィルターも使うことができます。その機能はかなり豊富で、主にGIMPやWebサービスのサーバーで利用されているプログラムです。
imagemagick
Use ImageMagick® to create, edit, compose, or convert bitmap images.
imagemagickのインストール方法
まずはimagemagickのインストールを行います。次のようにプログラムをインストールしたり、コマンドから簡単にインストールができます。
Windowsやその他のOS
Mac OS X (Homebrewからインストール)
$ brew install imagemagick
Ubuntu
$ apt-get install imagemagick
簡単な使い方。リサイズをしよう
まずは簡単なリサイズを行ってみます。コマンドの基本的な操作方法は別の記事をご覧ください。
1 | $ cd your-folder |
上記は、元の画像となるinputFile.jpg
を長辺1000pxでアスペクト比(縦横比)を維持しながらリサイズします。最後にoutputFile.jpg
として保存するコマンドです。
imagemagickのリサイズではconvert
コマンドを使うのが一般的のようです。
ウォーターマークの追加
続いて、画像のリサイズ後にウォーターマーク画像(watermark.png
)を追加します。
1 | $ convert -resize 1000x1000 -composite inputFile.jpg watermark.png -geometry 100x80+50+80 outputFile.jpg |
-composite:画像を重ねる
複数の画像を重ねるには-composite
オプションを使います。上記の例では下層にinputFile.jpg
を、上層にwatermark.png
を重ねています。
-geometry:重ねる画像の配置位置を決める
重ねる画像の大きさや、配置位置を決めるには-geometry
オプションを使います。指定方法は縦の大きさx横の大きさ+基準値からのx座標+基準値からのy座標
となります。
その他、よく使いそうなオプション
その他、便利なオプションをまとめてみたいと思います。
オプション | 説明 | 使用例 |
---|---|---|
-auto-orient | Exifに基づく画像の回転 | -auto-orient |
-strip | Exifの削除 | -strip |
-unsharp | アンシャープ。指定方法は、半径xディテール+適用量+しきい値 の組み合わせ。半径を0に指定するとimagemagickが画像に応じて最適なシャープ処理を行う。 | -unsharp 0x0.75+0.75+0.008 |
-gravity | compositeオプションで重ねる画像の配置位置。North (上),South (下),East (右),West (左),Center (中心)を組み合わせて指定する。 | -gravity SouthEest |
-quality | JPEGの品質 | -quality 97 |
-compose | Photoshopで言うところのBrend-If(描画モード)のようなもの。いくつかモードが用意されている。 | -compose over |
-depth | 出力するファイルの色深度(bit数) | -depth 8 |
上記のオプションを追加すると次のようになります。コマンドが長いので改行を入れています。
1 | $ convert -resize 1000x1000 \ |
コマンドが長文になってしまいましたが、上記のコマンド処理を一行ずつ見ていくと次の通りです。
- 長辺1000ピクセルでリサイズ
- 画像の回転情報を元に回転させる
- 画像のExifを削除
- シャープの処理
- JPEGの品質は97に指定
- inputFile.jpgとwatermark.pngを合成する(重ねる)
- watermark.pngは画像領域の右下に配置
- 画像のブレンドモードは通常モードに指定
- 色深度は8bitに指定
- outputFile.jpgに書き出し
上記で紹介したような、オプションを使うことで、ある程度自由にリサイズしたり、好きな位置にウォーターマークを配置することができます。
画像をカラーオーバーレイする
画像透かしなどの画像を単色で塗りつぶしたい時がありました。こういった時にはimagemagickでカラーオーバレイすることができます。
1 | $ convert "watermark.png" \ |
透明(アルファ)を持つPNG画像の場合は、透明度もしっかり維持されます。
リサイズ画像にカラーオーバーレイした画像透かしを重ねる
続いて、前項の「-composite:画像を重ねる」の項目と組み合わせると以下のようなコマンドになります。
1 | $ convert -size 1000x800 canvas:#ffffff \ |
コマンドが長文になってしまいましたが、上記のコマンド処理を一行ずつ見ていくと次の通りです。
- 1000x800ピクセルの画像領域を作成
- inputFile.jpgを1000ピクセルでリサイズ(1000x800になる予定)
- リサイズ画像を中央に配置
- リサイズ画像を画像領域に重ねる
- ウォーターマーク画像(watermark.png)
- カラーオーバーレイさせる色を設定
- カラーオーバーレイさせる
- 画像領域の右下にウォーターマークを配置
- ウォーターマークを画像領域に重ねる
- 色深度は8bitに指定
- JPEGの品質は97に指定
- output.jpgに書き出し
参考記事
上記の記事を書くにあたり、以下の記事を参考にさせていただきました。参考になる情報をありがとうございます。
箱の中の自由粒子
ImageMagickでリサイズする方法
簡単なリサイズ方法とアンシャープの掛け方について解説されている。
リサイズの使用例と、Exifの削除、Exif情報に基づいた画像回転、シャープについて解説されている。
Loud Minority
RMagick/ImageMagickで位置決めをする Gravityの挙動まとめ
iamgemagickの-gravity
や-composite
オプションで画像を重ねる際に、その画像の位置について解説されている。
ImageMagickのメモ
ImageMagickのメモ
-compose
オプションで画像を重ねる際に、photoshopで言うところのbrend-if(ブレンドモード)のようなオプションを指定できる。また、文字列から画像を生成する方法も解説されており、レシピは詳細な使用例で今後の参考になる。
クックパッド開発者ブログ
ImageMagickのピクセルキャッシュとリソース制限
ImageMagickの脆弱性「ImageTragick」と対策ついて解説されている。
Imagemagick Q&A
Watermark Text Tile
ウォーターマーク画像で敷き詰めた画像を上部に重ねる方法について。
Annotating Images
imageMagick v6 Examples
ウォーターマーク画像で敷き詰めるには、上記記事のように-tile
オプションを使うのも有効かもしれない。
imagemagickから文字や画像を生成配置して、写真に注釈を付ける方法が解説されている。かなり具体的で分かりやすい。
Stack overflow
Color overlay with opacity using ImageMagick in Rails
カラーオーバーレイの描画モードについて解説されている。
Stack overflow
Apply gradient mask on image that already has transparency with ImageMagick ?
Imagemagickの高速化 mprとmpc
2つの透明度(アルファ)を持った画像を、それぞれの透明度を維持したまま合成する方法について解説されている。一旦、2枚の透明画像からマスクを作り合成する。この際、mpr:
というコマンドはQiitaの記事が参考になる。
また、アルファを持つウォーターマーク画像を、指定した色で抜き出すのは次のコマンドとなる。
1 | # 水色で抜き出す |
昼メシ物語
本当は速いImageMagick: サムネイル画像生成を10倍速くする方法
Qiita
ImageMagick高速化まとめ
imagemagickの処理を高速化する方法が解説されている。convert
コマンドを使用する際に-define jpeg:size=800x600
などの、リサイズ後のサイズを定義しておくと、処理が速くなる。
また、imagemagickのインストール時に--disable-openmp
オプションを指定してインストールすると、メモリ消費を抑えるiamgemagickの最新バージョンがインストールされる。
サイボウズエンジニアのブログ
もうサムネイルで泣かないための ImageMagick ノウハウ集
(引用)確かに条件がマッチすれば大変素晴らしいオプションです。ただ、変換後のサイズが大きい場合、たいていは元画像サイズの 1/3 以上程度ですが、これを超えると -define jpeg:size オプションを指定していない時以上にメモリを消費します。
-define jpeg:size
オプションに関する、意見が参考になります。