目次
ImageMagickとは
ImageMagick(イメージマジック)とは画像のリサイズや統合などをコマンドラインで行うためのソフトウェア。
例えば画像を50%にリサイズする場合はPhotoshopを使用する場合は…
- Photoshop起動
- 画像をPhotoshopで開く
- イメージ => 画像解像度で幅と高さを50%に指定
- 画像を書き出す
以上の手順が必要なため時間がかかるが、ImageMagickなら下記のコマンドを実行するだけでリサイズ可能だ。
convert before.jpg -resize 50% after.jpg
convertは新規作成、mogrifyは上書き保存
前述ではconvertでbefore.jpg画像をリサイズしてafter.jpgを作成しているが、mogrifyを使用すればbefore.jpgをリサイズして上書き保存する。
mogrifyとはtransmogrifyの略で意味は「形を一変させる」
mogrify -resize 50% before.png
ファイルをPNGからJPGに変更
convert before.png after.jpg
画質変更(-quality)は使用しない
ImageMagickの画質変更(-quality)は画像劣化しやすく、劣化度合いも実行するまで不明のため、画質やプロファイル変更などはPhotoshopやSketchを使用したほうが良い。
EXIF情報は-stripで削除する
EXIF情報とは撮影日時やGPS情報などを含んだもので、これが含まれると個人情報漏洩になる可能性がある。
また、Webサイトに表示させる画像はEXIF情報を含める必要性が低く、削除したほうがファイルサイズも減らせるので必ず削除したほうが良い。
mogrify -strip photo.jpg
GIFアニメーションを作成
convert -delay 100 -loop 0 1.png 2.png 3.png anime.gif または convert -delay 100 -loop 0 *.png anime.gif
-delay 100は100/100秒ごとに切り替えを意味しているため0.5秒で切り替える場合は50にする。
-loop 0は無限ループを意味しており、3回繰り返す場合は-loop 3となる。
EXIF情報は-stripで削除する
EXIF情報とは撮影日時やGPS情報などを含んだもので、これが含まれると個人情報漏洩になる可能性がある。
また、Webサイトに表示させる画像はEXIF情報を含める必要性が低く、削除したほうがファイルサイズも減らせるので必ず削除したほうが良い。
mogrify -strip photo.jpg
複数画像を1つに統合
画像の統合もコマンドで実行可能なのでCSSスプライト用の画像作成がすぐにできる。
convert b1.png b2.png b3.png 4.png -append sprite.png または convert *.png -append sprite.png
画像の統合は縦は-appendで横は+appendだ。
convert *.png +append sprite.png
1つの画像に著作権画像を統合
画像内に(c)iwb.jpのような文字の画像を統合したいことがある。
composite -gravity [位置] [上の画像] [下の画像] [統合後]を使用すれば統合できる。
[位置]は下記の通り。
northwest(左上) | north(上) | northeast(右上) |
west(左) | center(中央) | east(右) |
southwest(左下) | south(下) | southeast(右下) |
composite -gravity southeast c.png j_before.jpg j_after.jpg
複数の画像にc.pngを埋め込むにはforでループさせる。
for file in *.jpg; do f=(`echo $file | tr '.' ' '`); composite -gravity southeast c.png ${f}.jpg ${f}_after.jpg; done
2つの画像の差分の画像を作成
compareコマンドか-compose differenceを使用すれば2つの画像の差分の画像を作成することができる。
compareを使用する場合は下記のコマンドを実行する。
compare a.jpg b.jpg d.jpg
-compose differenceを使用してa.jpgとb.jpgの差分箇所を表示した画像するには下記のコマンドを実行する。
convert a.jpg b.jpg -compose difference -composite _diff.jpg
作成された画像をa.jpg b.jpgと統合すれば差分箇所がわかりやすくなる。
convert _diff.jpg a.jpg b.jpg +append diff.jpg
1回のコマンドで統合済みの差分画像を作成する場合はこのようになる。
convert a.jpg b.jpg -compose difference -composite _diff.jpg && convert _diff.jpg a.jpg b.jpg +append diff.jpg && rm _diff.jpg
通常の写真の差分以外にもWebサイトのキャプチャ画像の差分チェックなど利用頻度が高いため.bashrcに関数を作成しておくと便利。
# mkdiff a.jpg b.jpg で diff.pngを作成 function mkdiff() { convert ${1} ${2} -compose difference -composite _diff.png convert _diff.png ${1} ${2} +append diff.png rm _diff.png }
不要な余白は-trimでトリミング
不要な余白をトリミングするには-trimを使用する。
convert c.png -trim c_after.png
before | after |
---|---|