mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Bash - ImageMagick で複数画像を一括作成!

[ プログラミング ] [ bash ]

こんにちは。

bash スクリプトで ImageMagick を使用して複数の画像を一括で作成する方法についての備忘録です。

シリーズ化したい画像や大量にサンプル画像が必要な際に役立つ(GUI ツールを使用するよりは楽になる)と思います。

0. 前提条件

  • Linux Mint 17.1(64bit) での作業を想定。
  • Bash 4.3.33 での作業を想定。
  • ImageMagick 6.7.7-10 での作業を想定。

1. bash スクリプトの作成

それほど凝ったものでもないので、説明はしない。
(以下のの ps_city は、市の名称が2文字の場合と3文字の場合でポイントサイズを分けるために計算している)

image_magick.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash

CITIES=(
  "SHIMANE   matsue     島根   松江"
  "OKAYAMA   okayama    岡山   岡山"
  "HOKKAIDO  sapporo    北海道 札幌"
  "TOCHIGI   utsunomiya 栃木   宇都宮"
  "KAGOSHIMA kagoshima  鹿児島 鹿児島"
)

for row in "${CITIES[@]}"
do
  echo "* $row"
  read pref_a city_a pref_n city_n < <(echo $row)
  ps_city=`expr 108 / ${#city_n}`
  convert \
    -size 128x128 gradient:darkblue-darkgreen \
    -gravity NorthWest \
    -font Courier-Bold \
    -pointsize 16 -fill gray \
    -stroke none                  -annotate +6+48 "$pref_a" \
    -font /usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf \
    -pointsize 36 -fill orange \
    -stroke black -strokewidth 10 -annotate +6+6  "$pref_n" \
    -stroke none                  -annotate +6+6  "$pref_n" \
    -gravity SouthEast \
    -pointsize $ps_city -fill red \
    -stroke black -strokewidth 10 -annotate +8+6  "$city_n" \
    -stroke none                  -annotate +8+6  "$city_n" \
    ./image_magick/${city_a}.png
done

2. bash スクリプトの実行

画像保存用ディレクトリを作成(今回の場合、スクリプトのあるディレクトリに “image_magick” というディレクトリを作成)して、bash スクリプトを実行する。

1
2
3
4
5
6
$ ./image_magick.sh
* SHIMANE   matsue     島根   松江
* OKAYAMA   okayama    岡山   岡山
* HOKKAIDO  sapporo    北海道 札幌
* TOCHIGI   utsunomiya 栃木   宇都宮
* KAGOSHIMA kagoshima  鹿児島 鹿児島

3. 画像の確認

今回の例の場合、以下のような5つの画像が作成されるはず。(以下は1枚に結合している)

IMAGE_MAGICK

4. 参考サイト


これを色々の場面に応用できるでしょう。

以上。

Comments