LoginSignup
0
0

More than 5 years have passed since last update.

ImageMagickで画像クイズを作る

Posted at

やったこと

複数の画像を並べて1枚の画像クイズを作った.

monster01.png
monster02.png
monster03.png
monster04.png
monster05.png
monster06.png
monster07.png
monster08.png
monster09.png

tiled.png

画像:いらすとや

実装

bash + ImageMagick

convert -crop でトリミングする

crop.sh
# crop {source directory} {target directory}

WIDTH=126
HEIGHT=102
for FILEPATH in `ls $1/*`
do
convert ${FILEPATH} -gravity center -crop ${WIDTH}x${HEIGHT}+0+0 $2/`basename ${FILEPATH}`
done

convert label でナンバリングする

rannotate.sh
# rannotate {source directory} {target directory}

BGCOLOR='#61B859'
COUNTER=1
for FILEPATH in `ls $1/* | sort -R`
do
convert ${FILEPATH} -background ${BGCOLOR} -pointsize 24 label:${COUNTER} +swap -gravity Center -append $2/`printf %02d $COUNTER`.${FILEPATH##*.}
COUNTER=$(( COUNTER + 1 ))
done

montage -tile で並べる

tile.sh
# tile {source directory} {target file}

COLNUM=6
magick `ls $1/*` pnm:- | montage - -tile ${COLNUM}x -geometry +0+0 $2

1連の処理をまとめる

tile+.sh
# tile+ {source directory} {target file}

DIR=`dirname $0`
mkdir /tmp/cropped
rm /tmp/cropped/*
${DIR}/crop.sh $1 /tmp/cropped
mkdir /tmp/annotated
rm /tmp/annotated/*
${DIR}/rannotate.sh /tmp/cropped /tmp/annotated
${DIR}/tile.sh /tmp/annotated ${2:-tiled.png}

crop.sh, rannotate.sh, tile.sh, tile+.sh を同ディレクトリに配置する.

学び

  • basenamedirname
  • montageはデフォルトでラベルをつけるためmagick pnm:-をかませて消去する.
  • デフォルト変数${VAR:-default}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0