21.5 convert コマンド

convert は Mac のターミナル上で走る,画像を編集するためのコマンドです.コマンドなので絵を描いたりといったグラフィカルな作業はできませんが,画像のフォーマット (保存形式) を変換したり拡大・縮小をしたりといった操作が簡単にできます.対応するフォーマットが多い点も魅力で,hwb25.4 シェルスクリプト で説明するようにシェルスクリプトと合わせて画像を一括処理することもできます.

以下では主要な機能である「フォーマットの変更」「画像の拡大・縮小」「画像の切り取り」「解像度の指定」「回転と反転」「背景の透過」「画像の合成」「グレースケールと 2 値化」「画質の変更」に焦点を当て,convert コマンドの使い方を説明します.ターミナルの使い方については hwb15. コマンド を参考にしてください.

フォーマットの変更

convert コマンドの後ろに元々のファイル名と出力するファイル名を並べることで,拡張子に応じてフォーマットの変更をすることができます.たとえば次の例では,EPS 形式の hoge.eps を PNG 形式の hoge.png に変えることができます.

convert hoge.eps hoge.pngreturn2

ここでは EPS 形式と PNG 形式を例に挙げましたが,convert コマンドの対応するフォーマットは他にもたくさんあります.少なくとも,日常的に使われる BMP, PNG, TIFF, JPG, PDF, EPS, PS などの形式には全て対応しており,これらのフォーマットの間を相互に変換することが可能です.ちなみに対応フォーマットの完全なリストは externalImageMagick の公式ページ にあります.

画像の拡大・縮小

画像のサイズは変更を -resize オプションで指定できます.たとえば次の例では hoge.jpg の中身を 50% のサイズに縮小した画像を hoge2.jpg という名前で保存します.

convert -resize 50% hoge.jpg hoge2.jpgreturn2

パーセント指定ではなく,ピクセルサイズを直接指定してもサイズ変更ができます.たとえば次の例では hoge.jpg を横 1024 ピクセル,縦 768 ピクセルの箱にぴったり収まる大きさに変換し,それを hoge2.jpg に保存します.

convert -resize 1024x768 hoge.jpg hoge2.jpgreturn2

元の画像の比率を保存せずに特定の大きさに変換したい場合,次のように縦横のピクセルサイズの後ろに ! 記号をつけます.

convert -resize 1024x768! hoge.jpg hoge2.jpgreturn2

画像の切り取り

-crop オプションを使うと,画像の一部を切り出すことができます.例えば次の例では,「hoge.png の左上から右に 50px, 縦に 100px の点を原点とし,そこから横 150px, 縦 200px の長方形」を切り取り,それを hoge2.png に保存します.

convert -crop 150x200+50+100 hoge.png hoge2.pngreturn2

指定する順序は「横の長さ,縦の長さ,原点の x 座標,原点の y 座標」です.

解像度の指定

解像度を指定するには -density オプションを使います.このオプションが効果を発揮するのはベクタ形式の画像をラスタ形式に変換する時です (ベクタ形式とラスタ形式については hwb18.6.1 画像の符号化 を参照してください).たとえば

convert -density 150x150 hoge.pdf hoge.pngreturn2

とすると hoge.pdf が 150dpi (1 インチ幅に 150 ピクセル) の解像度を持つ PNG 形式に変換され,その結果が hoge.png に保存されます.

回転と反転

convert コマンドに -rotate オプションをつけると,任意の角度の回転ができます.例えば次の例では,hoge.jpg を時計回りに 30 度回転します.

convert -rotate 45 hoge.jpg hoge2.jpgreturn2

また -flip, -flop オプションを使うことで,それぞれ上下の反転と左右の反転ができます.次の例では hoge.bmp の上下を反転させたものが hoge2.bmp に保存されます.

convert -flip hoge.bmp hoge2.bmpreturn2

背景の透過

-transparent オプションを使うと,特定の色を透過色にすることができます.たとえば背景が白の hoge.png という画像に対して

convert -transparent white hoge.png hoge2.pngreturn2

とすると,背景が透過色になった hoge2.png が作れます.

画像の合成

-composite オプションを用いると,2 つの画像の合成ができます.たとえば

convert hoge1.png hoge2.png -geometry 50+100 -composite hoge.pngreturn2

とすると,hoge1.png の左上から横に 50px, 縦に 100pxの点を原点とし,その上に hoge2.png を合成した画像が hoge.png に保存されます.

グレースケールと 2 値化

-type オプションで GrayScale を指定すると,画像をグレースケールに変換できます.たとえば

convert -type GrayScale hoge.png hoge2.pngreturn2

とすれば,hoge.png をグレースケールにしたものが hoge2.png に保存されます.また -threshold オプションで

convert -threshold 500 hoge.png hoge2.pngreturn2

とすると, 特定の明るさを境界にして画像を白黒 2 色に変換できます.

画質の変更

画像の画質を変更するには -quality オプションを使います.変更すると言っても元の画像以上に画質を上げることはできませんので,このオプションはもっぱら画質を下げたいとき (たとえば,必要以上の解像度で紙をスキャンしてしまったとき) に使います.

-quality に続いて,画質を 0 から 100 までの整数で指定できます.数字が大きいほど画質が高くなります.たとえば次の例では,hoge.jpg の画質を 50 にしたものが hoge2.jpg に保存されます.

convert -quality 50 hoge.jpg hoge2.jpgreturn2

ただ,どの数値にすればどの程度の画質になるのかは,人間が見てみないと分かりません.実際に使う場合は試行錯誤が必要でしょう.