# 16.4. convert コマンド
**Source**: https://hwb.ecc.u-tokyo.ac.jp/hwb2023/applications/graphics/convert/
**Parent**: https://hwb.ecc.u-tokyo.ac.jp/hwb2023/literacy/email/
`convert` は Mac のターミナル上で使う、画像を編集するためのコマンドです。
画像のフォーマット (保存形式) を変換したり拡大・縮小をしたりといった操作が簡単にできます。
複数のファイルを一括で処理する目的にも向いています。
以下では主要な機能である「フォーマットの変更」「画像の拡大・縮小」「画像の切り取り」「解像度の指定」「回転と反転」「背景の透過」「画像の合成」「グレースケールと 2 値化」「画質の変更」に焦点を当て、convert コマンドの使い方を説明します。ターミナルの使い方については[13. コマンドの基本](https://hwb.ecc.u-tokyo.ac.jp/hwb2023/information/cui)
を参考にしてください。
## 動作確認 [#](#version)
convert コマンドを利用可能かどうかを、ターミナルで `convert -version` と入力して確認します。
ターミナルへのコマンド入力方法やパスの表記法は [13. コマンドの基本](https://hwb.ecc.u-tokyo.ac.jp/hwb2023/information/cui)
で説明しました。
ECCS iMac端末なら、以下のようにバージョンやcopyright表記が表示されます。
convert -version
```
Version: ImageMagick 7.0.10-59 Q16 x86_64 2021-01-24 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
...
```
ImageMagick の公式ページ
> convert は `imagemagick` というフリーソフトウェアとして配布されています。mac なら homebrew からインストールすることができます。
## フォーマットの変更 [#](#format)
使い方の基本は、コマンド名の convert に続けてファイルのパスを2つ入力します。それぞれ入力画像と出力画像に対応します。
画像フォーマットの変更は、ファイル名の拡張子で指示します。
たとえば `pict.jpeg` が手元にあるときに、`png` 形式に変換した `pict.png` というファイルを作るように示す指示は以下になります。
convert pict.jpeg pict.png
> 他の多くのコマンドと同様に、指示に成功したら、無言でプロンプトが戻り次の入力待ちになります。
> エラーが起こったときは、エラーメッセージが文字列で表示されます。
`png`, `jpeg` だけでなく `pdf`, `tiff`, `svg` など多くの形式に対応しており、相互に変換することが可能です。
## 画像の拡大・縮小 [#](#resize)
画像のサイズは変更を `-resize` オプションで指定できます。たとえば次の例では hoge.jpg の中身を 50% のサイズに縮小した画像を hoge2.jpg という名前で保存します。
convert -resize 50% hoge.jpg hoge2.jpg
パーセント指定ではなく、ピクセルサイズを直接指定してもサイズ変更ができます。たとえば次の例では hoge.jpg を横 1024 ピクセル、縦 768 ピクセルの箱にぴったり収まる大きさに変換し、それを hoge2.jpg に保存します。
convert -resize 1024x768 hoge.jpg hoge2.jpg
元の画像の比率を保存せずに特定の大きさに変換したい場合、次のように縦横のピクセルサイズの後ろに ! 記号をつけます。
convert -resize 1024x768! hoge.jpg hoge2.jpg
## 画像の切り取り [#](#crop)
`-crop` オプションを使うと、画像の一部を切り出すことができます。例えば次の例では、「hoge.png の左上から右に 50px, 縦に 100px の点を原点とし、そこから横 150px, 縦 200px の長方形」を切り取り、それを hoge2.png に保存します。
convert -crop 150x200+50+100 hoge.png hoge2.png
指定する順序は「横の長さ、縦の長さ、原点の x 座標、原点の y 座標」です。
## 解像度の指定 [#](#density)
解像度を指定するには `-density` オプションを使います。このオプションが効果を発揮するのはベクタ形式の画像をラスタ形式に変換する時です (ベクタ形式とラスタ形式については[14.4. 画像の符号化](https://hwb.ecc.u-tokyo.ac.jp/hwb2023/information/coding/graphics)
を参照してください)。たとえば
convert -density 150x150 hoge.pdf hoge.png
とすると hoge.pdf が 150dpi (1 インチ幅に 150 ピクセル) の解像度を持つ PNG 形式に変換され、その結果が hoge.png に保存されます。
## 回転と反転 [#](#rot)
convert コマンドに `-rotate` オプションをつけると、任意の角度の回転ができます。例えば次の例では、hoge.jpg を時計回りに 30 度回転します。
convert -rotate 45 hoge.jpg hoge2.jpg
また `-flip`, `-flop` オプションを使うことで、それぞれ上下の反転と左右の反転ができます。次の例では hoge.bmp の上下を反転させたものが hoge2.bmp に保存されます。
convert -flip hoge.bmp hoge2.bmp
## 背景の透過 [#](#transparent)
`-transparent` オプションを使うと、特定の色を透過色にすることができます。たとえば背景が白の hoge.png という画像に対して
convert -transparent white hoge.png hoge2.png
とすると、背景が透過色になった hoge2.png が作れます。
## 画像の合成 [#](#compose)
`-composite` オプションを用いると、2 つの画像の合成ができます。たとえば
convert hoge1.png hoge2.png -geometry 50+100 -composite hoge.png
とすると、hoge1.png の左上から横に 50px, 縦に 100pxの点を原点とし、その上に hoge2.png を合成した画像が hoge.png に保存されます。
## グレースケールと 2値化 [#](#gray)
`-type` オプションで `GrayScale` を指定すると、画像をグレースケールに変換できます。たとえば
convert -type GrayScale hoge.png hoge2.png
とすれば、hoge.png をグレースケールにしたものが hoge2.png に保存されます。また -threshold オプションで
convert -threshold 500 hoge.png hoge2.png
とすると, 特定の明るさを境界にして画像を白黒 2 色に変換できます。
## 画質の変更 [#](#qual)
画像の画質を変更するには `-quality` オプションを使います。変更すると言っても元の画像以上に画質を上げることはできませんので、このオプションはもっぱら画質を下げたいとき (たとえば、必要以上の解像度で紙をスキャンしてしまったとき) に使います。
-quality に続いて、画質を 0 から 100 までの整数で指定できます。数字が大きいほど画質が高くなります。たとえば次の例では、hoge.jpg の画質を 50 にしたものが hoge2.jpg に保存されます。
convert -quality 50 hoge.jpg hoge2.jpg
ただ、どの数値にすればどの程度の画質になるのかは、人間が見てみないと分かりません。実際に使う場合は試行錯誤が必要でしょう。