どせいたんさき。

ナスダヨー

ImageMagick で画像に影をつけるスクリプト

主に『画像処理についてあれこれ』さんで公開されている情報を参照して簡単なスクリプトを書いてみました.左右にぼやっと影が入って何となく浮いているような感じに見えなくもありません.もしかしたら白背景以外だとうまく見えないかもしれません.

左:元画像/右:変換後


変換用のスクリプトは以下の通りです.見てもらえれば分かると思いますがおそらく 100px 以下の画像を変換しようとするとうまくいかないかもしれません.また,あまり大きな画像ファイルを変換しようとするとかなり時間がかかります.必要最低限の大きさの画像を使ってください.

#!/bin/bash

# file : mkshadow.sh
# usage: bash mkshadow.sh image

FILE=$1
SIZE=`identify ${FILE} | \
		awk '{print $3}' | \
		awk -Fx '{printf "%dx%d", $1*(1.02),$2}'`
WID=`echo ${SIZE} | awk '{printf "%d", $1*0.01}' `

convert xc:none ${FILE} -gravity center \
		-background none -extent ${SIZE} \
		\( +clone -background \#000 -shadow 40x3+${WID}-0 \
		-crop ${SIZE} -fx "1-sin(pi*j/h)" \) +swap \
		\( +clone -background \#000 -shadow 40x3-${WID}-4 \
		-crop ${SIZE} -fx "1-sin(pi*j/h)" \) +swap \
		-background none -mosaic ${FILE%.*}~.png

自分はプレゼンテーションで使う画像をこのスクリプトで変換して使用していたりします. keynote のように COOL なアプリケーションならデフォルトでこの程度の機能はついていると思うのですが,自分が使っている OpenOffice.org では残念な影つけの機能しかないのであらかじめ画像の方を加工しておいてインポートするというやり方がよいのかなあと思っています.