Linux : ImageMagickで高速画像処理

Linux
この記事は約4分で読めます。

※当サイトはアフィリエイトからの広告収入で運営されており、広告が表示される場合があります。

ImageMagickはLinux、Windows、macOS、iOS、Androidなど、様々なOSで動くクロスプラットフォームな画像処理ソフトウェア群。GPLでライセンスされたオープンソースソフトウェアのため様々な場面で権利関係を気にせずに自由に使える。最新のWebP画像フォーマットから誰も使っていないような古い画像形式まで表示から変換読み書きができる。さらに一部データが破損しているファイルも喪失部分を無視して力技で読み込んで出力できるなど色々な面白い使い方ができる。

対応している画像形式

自システムが変換できる画像形式をリスト化

 $ magick convert -list format

真ん中の Mode 項目に注目してほしい. r は読み込み w は書き込みできることを表している。

ImageMagick対応形式

このソフトウェアの使い方を覚えると重い画像編集ソフトを起動しなくて済むだけでなく、1つのコマンドで大量の画像を一括処理できるようになる。

コマンド書式

基本的にコマンドの書式は以下のようになるが Linux においては magick を省略して convertmogrify を言ったツールを直接指定しても問題ない。

$ magick ツール -オプション

単一の画像ファイルを処理したい場合は convert コマンド、複数の画像ファイルを処理したい場合は mogrify コマンドを用いる。

画像ファイルの形式を変換する

最初に画像のフォーマットを変換するコマンドから。しばしば画像の特徴に合っていない形式になっているファイルがある。こんなときに以下のコマンドを用いることでそのまま画像を圧縮変換してくれる。

コマンド例

単一の画像ファイルを変換

hoge.png を hoge.jpg というファイル名のJPEG形式に変換。他にオプションを利用しない場合は以下のように -format オプションを短縮し出力するファイルの拡張子を指定するだけで変換することができる。

convert hoge.png hoge.jpg

また Photoshop Data (.psd)といった特殊なファイルの変換もできる。

convert hoge.psd hoge.png

複数の画像ファイルを変換

現ディレクトリにあるファイルをすべてJPEGに変換するコマンド。

mogrify -format jpg *.*

PNGファイルをJPG形式に変換後、オリジナルのPNGファイルを削除するコマンド。

mogrigy -format jpg *.png && rm *.png

変換品質について

変換する最の品質を指定するには -quality オプションを用いる。

JPEGの場合は圧縮率を1から100で表現する。1が最も圧縮率が高いが画像の劣化が激しく、100は画像の品質は高いが圧縮率は最も引くい。圧縮率を指定しなかったときはソフトウェアが自動的に決定するが、できなかった場合は92に固定される。品質90よりも上の値を設定すると彩度情報がダウンサンプリングされない。

PNG画像フォーマットの場合は10桁で圧縮率、1桁でどのフィルターを適用するか決める。75がデフォルトの値で、圧縮レベルは7でフィルター方式はおまかせという感じになる。PNG画像は可逆圧縮なので品質設定をいくら変えようが見た目にあまり変化はない。

コマンド例

ファイル hoge.png を圧縮レベル50でJPGファイルに変換。

convert -format hoge.png -quality 50 hoge.jpg

現ディレクトリ内すべてのPNGファイルを品質を指定して変換。圧縮レベルは7、フィルタはおまかせ。

mogrify -format jpg -quality 85 *.png

画像のリサイズについて

画像を拡大縮小する際は -resize コマンドオプションを用いる。

アスペクト比を維持したままリサイズするには 横x縦 あるいは 横x を指定するだけで良い。指定したサイズ内に収まるようにイメージを拡大縮小してくれる。

縦横比を無視して強制的にリサイズするには 横x縦! と記述。イメージを引き伸ばしたり縮める。

コマンド例

hoge.jpg をアスペクト比を維持したまま横幅1200ピクセルにリサイズする。

convert -resize 1200x hoge.jpg 

ディレクトリ内のJPGファイルをアスペクト比を無視して1366×768にリサイズする。

mogrify -resize 1366x768! *.jpg

現ディレクトリにあるすべてのJPEGファイルの縦横を50%に縮小する。

mogrigy -resize 50% *.jpg 

その他の変換

グレースケールに変換

convert hoge.png -colorspace Gray hoge.png

色は反転させる

convert -negate hoge.png

余白を切り落とす

convert hoge.jpg -trim hoge-trim.jpg

おわり

コメント

タイトルとURLをコピーしました