ImageMagickコマンドラインツールを使用した画像の操作
1. 概要
ImageMagick は、Linuxエコシステム内で使用できる強力な画像ビューアーおよび編集ツールです。 さらに、ImageMagick CLIを使用して、Bashなどのシェルからの画像をさまざまな方法で処理できます。
このチュートリアルでは、ImageMagickを使用して画像を操作する最も一般的な方法のいくつかを見ていきます。
2. インストール
まず、ほとんどのオペレーティングシステムのパッケージリポジトリで利用可能であるImageMagickをインストールすることから始めましょう。 バイナリを直接ダウンロードするか、ソースからビルドすることもできます。
パッケージをインストールしたら、インストールしたバージョンを確認して、インストールを確認しましょう。
$ magick -version
Version: ImageMagick 7.0.8-13 Q16 x86_64 2018-10-21 https://imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
...
インストールが成功すると、バージョンとその他の情報がコンソールに表示されます。
3. シンプルな花の画像
このチュートリアル全体を通して、花のきれいな画像を使用します。
画像の操作を開始する前に、まずidentifyオプションを使用して花の属性のいくつかをチェックすることから始めましょう。
$ magick identify flower_original.jpeg
flower_original.jpeg JPEG 400x400 400x400+0+0 8-bit sRGB 23693B 0.000u 0:00.000
これにより、元の花の画像に関する情報の概要がわかります。 デフォルトで表示される列は次のとおりです。
- ファイル名
- 画像形式
- ピクセル単位の寸法
- 画像のジオメトリ
- 画像の深さ
- 画像の色空間
- バイト単位のファイルサイズ
- ユーザー時間
- 経過時間
同様に、 -verbose オプションを使用して、さらに多くの情報を取得することもできます。
4. 画像を別の形式に変換する
ImageMagickには圧倒的な数の機能があります。 この例では、convertコマンドを使用した画像操作に焦点を当てます。 いくつかの単純で実用的なユースケースに取り組みますが、実際には、このツールの表面をかじっただけです。
convert コマンドには、幅広い可能性を提供する目を見張るような237のオプションがあります。 ただし、最も基本的なものの1つから始めましょう。
$ convert flower_original.jpeg flower_original.png
ご覧のとおり、このコマンドは、元のファイルを変更せずに、単一のファイルflower_original.jpegをJPG形式からPNG形式に変換します。
新しい画像を確認すると、形式と、もちろんファイルサイズを除けば同じであることがわかります。
$ magick identify flower_original.png
flower_original.png PNG 400x400 400x400+0+0 8-bit sRGB 163499B 0.000u 0:00.000
同様に、画像のディレクトリがある場合は、ディレクトリ内のすべての画像に操作を適用することもできます。
$ convert *.jpg *.png
最後に、利用可能なさまざまな形式を調べることができます。
$ identify -list format
Format Module Mode Description
-------------------------------------------------------------------------------
3FR DNG r-- Hasselblad CFV/H3D39II
3G2 MPEG r-- Media Container
3GP MPEG r-- Media Container
...
jpeg画像をpdfに変換することもできるので、これは特に優れた機能です。
5. 画像のサイズ変更
もう1つの典型的な操作は、画像のサイズ変更です。 convertコマンドの-resizeオプションを使用して、前の例に基づいて構築できます。
convert flower_original.jpeg -resize 64x64 flower_64x64.jpeg
この例では、元の花の画像を64×64ピクセルのサイズの小さな正方形のボックスに収めます:
同様に、resizeオプションを使用するときにパーセンテージ値を指定することもできます。 これにより、指定された量だけ画像が拡大縮小されます。
convert flower_original.jpeg -resize 50% half_flower.jpeg
結果を調べてみましょう。
ほとんどの場合、このタイプのスケーリングは完全に問題ありませんが、画像の最終的なピクセルサイズは最も近い整数に丸められることに注意してください。 その結果、実際のスケールは、提供するスケーリング係数と正確に一致しない場合がありますが、非常に近くなります。
このセクションを締めくくるには、通常、画像のサイズを変更する最も一般的な方法は、目的のサイズに合うように画像を縮小することです。 ただし、ここで説明した–resizeオプションを使用すると、もちろん、画像を拡大することは完全に可能です。
5. 反転と回転
次に、画像を反転および回転する方法を見てみましょう。これは、場合によっては便利です。
convert flower_original.jpeg -flip flipped_flower.jpeg
そして対応する結果:
ご覧のとおり、-flipオプションを使用するのと同じくらい簡単です。これにより、新しいミラーイメージが上下逆に作成されます。
次に、-rotate操作を使用して画像を回転させる方法を見てみましょう。
convert flower_original.jpeg -rotate 60 rotate_clockwise_flower.jpeg
画像は時計回りに60度シフトするはずです。
-90 のように負の値を指定すると、反時計回りに回転します。
6. トリミング
画像を切り抜くことができることは重要な操作テクニックなので、先に進んでそれを行う方法を見てみましょう。
convert flower_original.jpeg -crop 180x170+50+50 cropped_flower.jpeg
このコマンドを実行すると、画像の長方形の領域が切り取られます:
簡単に言うと、 -crop 画像演算子は、geometry引数を使用して指定したサイズと位置で、現在のシーケンスの画像の一部を切り取ります。
この例では、geometry引数の幅と高さを指定しています。これにより、トリミング後に残る画像のサイズ(180×170)が得られます。 次に、オフセット(+ 50 + 50)のxとyは、元の画像に対するトリミングされた画像の左上隅の位置を示します。
7. 色の効果
次に、花の画像にシンプルで印象的なカラー効果を適用する方法を見てみましょう。
2つの画像の左側から始めて、最初の画像では、色空間を明示的に灰色に設定しています:
convert flower_original.jpeg -colorspace Gray greyscale_flower.jpeg
これは単に色を灰色に変換します。 実際、使用可能なすべての色空間を一覧表示できます。
$ convert -list colorspace
CIELab
CMY
CMYK
Gray
...
一方、2番目の画像では、 -monochrome オプションを使用して、画像を真の白黒に変換しています。
-negate オプションを使用して、各ピクセルを補色に置き換えることもできます。
その結果、画像の赤、緑、青の強度が無効になります。 白が黒、黄色が青などになります。
最終的な画像では、木炭画をシミュレートします。
convert flower_original.jpeg -charcoal 1.2 charcoal_flower.jpeg
このフラグは、追加の関連要素を取ります。 通常、少数を使用すると、かなり正確な出力が得られます。
8. 境界線の追加
最後から2番目の例では、CLIの境界オプションをいくつか使用して優れた機能を確認します。
convert flower_original.jpeg -bordercolor yellow -border 5 flower_with_border.jpeg
この例では、 -border オプションを使用して、境界線の色を黄色に設定し、境界線のサイズを設定します。
ご覧のとおり、元の花の画像の周りに鮮やかな黄色の境界線が残っています。
9. アニメーションの作成
アニメーションGIFにマージしたい期間にまたがる多数の画像があると想像してみてください。 太陽の画像があり、およそ2秒ごとにキャプチャされているとします。
画像が正しい時間順に順番に並べられていると仮定すると、次のようになります。
$ ls -1
20210601_170450_swap174_512.jpg
20210601_170640_swap174_512.jpg
20210601_170830_swap174_512.jpg
20210601_171020_swap174_512.jpg
...
コマンドを実行して、ディレクトリ内のすべての*.jpg画像ファイルからアニメーションを生成できます:
convert -loop 0 *.jpg sol.gif
出力は太陽の映画のように見え、かなりクールです。
この例では、値が0の-loopオプションを使用しています。 これにより反復がゼロに設定されるため、アニメーションは無限に繰り返されます。
-delay [ticks] オプションを使用して、各画像遷移の間に遅延を追加することもできます。
したがって、 -resize を含むさまざまなオプションを組み合わせて、最終的なgifサイズを小さくすることができます。
convert -delay 20 -loop 0 -resize 50% *.jpg sol.gif
10. 結論
この記事では、ImageMagickがコマンドラインを介して画像を操作するために提供する基本的な機能のいくつかについて説明しました。
最初に、いくつかの基本的なサイズ変更機能を確認し、次に画像を反転、回転、トリミングする方法を確認しました。 その後、ファンキーなカラーリングオプションを適用する方法を確認し、アニメーションの作成方法を学習して終了しました。
もちろん、氷山の一角に触れただけなので、詳細については、優れたドキュメントを確認してください。