とらりもんHOME  Index  Search  Changes  Login

Imagemagick

Imagemagickとは

  • Linuxのコマンド感覚で、画像処理ができます。
  • シェルスクリプトに組み込むことができるので、大量の画像処理も簡単。図表作成の省力化に!
  • Windows版もあるらしい。perlやPHPなど、様々な言語のライブラリとしても使えるらしい。
  • 本家のサイト:http://www.imagemagick.org/

インストール

OSがUbuntuの場合は、apt-getでいけます。

apt-get install imagemagick

デスクトップ画面上部の「システム」→「システム管理」→「synapticパッケージマネージャ」で探してもOK。

基本的な使い方

基本的に、「コマンド (オプション) 入力ファイル 出力ファイル」のような感じで端末に打ちこみます。

例えば、画像のフォーマットをjpg形式からpng形式に変えたい場合には、以下のようにします。

convert test.jpg test.png

convertは、imagemagickのコマンドのひとつで、最もよく使うものなので、ぜひ覚えましょう。というか、convertがあれば、ほとんど何でもできます。まさに神です。

convertには、たくさんのオプションがあります。例えば、画像を時計回りに90度回転するには、以下のrotateオプションをつけます。

convert -rotate +90 test.jpg test1.jpg

オプションは、imagemagickのサイトに山ほど載っているので、それを参考にしてください。

以下に、よく使う例を挙げておきます。

よく使う例

画像のフォーマットを変える

convert test.jpg test.png

epsファイルを変換する場合

convert -density 144 test.eps test.png
  • -densityは解像度の変更オプション。
  • epsの変換の場合、デフォルトだと72dpiだが、それだと小さすぎるので、上のようにする。
  • 背景が白でなく、透明になってしまう場合がある。gimpでアルファチャンネルの無効化をすれば直る。もしくは,
convert input.png -background white -flatten -alpha off output.png

画像のサイズを変える

-geometryか、-resizeを使う。

例1)ピクセル数を指定する場合

convert -geometry 300x200 test.png s_test.png
  • 「-geometry 横ピクセル数x(小文字のエックス)縦ピクセル数」で大きさを指定。
  • 縦横比は自動的に固定される。

例2)%を指定する場合

convert -geometry 80% test.png s_test.png

画像を回転させる

convert -rotate +90 test.png s_test.png
  • +で時計回り、-で反時計回り。

画像をトリミングする(一部を切り取る)

convert -crop 300x200+10+10 test.png out.png
  • [切り取る部分の横ピクセル数]x[切り取る部分の縦ピクセル数]+[横のはじまり(左から数えて)]+[縦のはじまり(上から数えて)]のように指定。
  • オフセットの指定には、+だけではなく、-も使える。

画像を合体する

convert +append test01.png test02.png out.png
  • +だと水平方向、-だと垂直方向に並べる。

2つの画像を合成する(base.pngにon.pngを重ねる:左上がデフォルト)

convert base.png on.png -gravity northeast -composite out.png
  • -gravityで位置を指定(ここでは右上)

色を変える

convert -fill "#666666" -opaque "#FF0000" test.png out.png
  • opaqueに指定した色(ここでは赤色)を、fillに指定した色(ここではグレー)に変える。

余白を作る

convert -gravity southeast -splice 25x25 test.png out.png

画像と画像のあいだに余白をつけて、くっつける

convert test1.jpg -background white -gravity east -splice 5x0 test2.jpg +append -splice 5x0 test3.jpg +append -bordercolor white -border 5x5 out.jpg

文字列を画像にする

convert -size 1700x200 -font Verdana-Negreta -gravity center label:"2006 DOY200" out.png
  • 使えるfontは、「convert -list font」と打てば、表示される。
  • 上のリストに表示されないが,そのパソコンに入っている別のフォントを使いたい場合,フォント名のかわりにフルパスで記入する(/usr/share/fonts/truetype/msttcorefonts/Arial.ttf のように)。

画像に文字列を入れる

Verdana-Negreta,フォントサイズ18, 黒のフォントで「test」と入れる場合

convert -font  Verdana-Negreta -pointsize 18 -fill black -draw "text 50,50 'test'" input.png out.png

GIFアニメの作成

convert -delay 30 test*.png test.gif

PDFをJPEGに

convert -density 600 -geometry 1000 in.pdf out.jpg

↑この引数の並び順を変えると結果が変わってしまう(特に, in.pdfを前に持ってきてはダメ)。

標準入力を使う

パイプを使いたいときには、こんな感じ。

cat input.png | convert - -rotate +90 output.png

ブレース展開

$convert 01{.eps,.jpg}  => convert 01.eps 01.jpg  と同じ。

シェル変数の取り扱い

シングルクオーテーション内でシェル変数を書くと展開されないので、ダブルクォーテーションで囲む。

$ convert -draw ' circle $some_shell_value ... ' # これだと展開されない
$ convert -draw " circle $some_shell_value ... " # これだと展開される
Last modified:2017/03/03 20:41:42
Keyword(s):
References:[トレーニングコース] [とらりもんHOME]