Saturday, April 05, 2008

ImageMagickで、画像に半透明の斜線を重ね合わせる

画像に半透明の斜線を重ね合わせるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe -size 3x3 xc:white -fx "(i+j)%%3==0?1:0" -write mpr:t1 +delete -size 200x200 sf.jpg ( -size 200x200 tile:mpr:t1 -matte -channel a -fx "0.3" -channel rgba ) -composite sample353a.jpg

上記のバッチファイルでは、以下の処理を実行しています。
1. 3x3ピクセルの画像サイズで、-fxを使用して斜線画像の作成。
2. -write mpr:t1でメモリに保存して、+deleteでいったん画像を削除。
3. 重ね合わせる画像の読み込み
4. 200x200ピクセルの画像サイズで、2で保存した画像をタイル配置。
5. -matte -channel a -fx "0.3"でタイル配置した画像を半透明に。
6. -compositeで重ね合わせ。

元画像(sf.jpg)


出力画像(sample353a.jpg)


関連項目
ImageMagickで斜線画像を生成する

Friday, April 04, 2008

ImageMagickで、複数行文字列の左寄せ・中央寄せを指定する

複数行文字列の左寄せ・中央寄せを指定するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
rem 左寄せ
%im%\convert.exe -font "c:/winnt/fonts/msmincho.ttc" -pointsize 30 -fill #303030 -background #f0eee4 label:@message.txt sample347a.png

message.txt(描画する文字列はUTF-8エンコーディングでテキストファイルに保存します)
--------------------------
日本語の
文字列
--------------------------

デフォルトでは、改行された各行は左寄せで描画されます。

出力画像(sample347a.png)


rem 中央寄せ
%im%\convert.exe -font "c:/winnt/fonts/msmincho.ttc" -pointsize 30 -fill #303030 -background #f0eee4 -gravity center label:@message.txt sample347b.png

-gravity centerを使用することにより改行された各行が中央寄せで出力されます。

出力文字列(sample347b.png)

Tuesday, April 01, 2008

ImageMagickで、写真から指定の色の半透明濃淡画像に変換する

写真から指定の色の半透明濃淡画像に変換するには、以下のバッチファイルを実行しています。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
rem 画像を白色の半透明濃淡画像に変換
%im%\convert.exe sf.jpg -matte -channel a -fx "luminosity" -channel rgb -fx "#FFFFFF" sample351a.png
rem 重ねあわせ例
%im%\convert.exe -size 200x200 pattern:checkerboard sample351a.png -composite sample351b.jpg

上記バッチでは、以下の処理を実行しています。
1. 明るさを元に、アルファチャネルに値を設定。rgbチャネルに白(#FFFFFF)を設定。
2. 1の出力画像と市松模様(pattern:checkerboard)を重ね合わせ。

元画像(sf.jpg)


出力画像と市松模様の重ね合わせ例(sample351b.jpg)



rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
rem 画像を水色の半透明濃淡画像に変換
%im%\convert.exe sf.jpg -matte -channel a -fx "luminosity" -channel rgb -fx "#BBDDFF" sample351c.png
rem 重ねあわせ例
%im%\convert.exe -size 200x200 pattern:checkerboard sample351c.png -composite sample351d.jpg

出力画像(sample351c.png)


重ね合わせ例(sample351d.jpg)


2008/07/13追記
ver6.4.0あたりからluminosityからlightnessに変わったので、以下のバッチを実行します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.2-Q16
rem 画像を白色の半透明濃淡画像に変換
%im%\convert.exe sf.jpg -matte -channel a -fx "lightness" -channel rgb -fx "#FFFFFF" sample351a.png
rem 重ねあわせ例
%im%\convert.exe -size 200x200 pattern:checkerboard sample351a.png -composite sample351b.jpg
rem 画像を水色の半透明濃淡画像に変換
%im%\convert.exe sf.jpg -matte -channel a -fx "lightness" -channel rgb -fx "#BBDDFF" sample351c.png
rem 重ねあわせ例
%im%\convert.exe -size 200x200 pattern:checkerboard sample351c.png -composite sample351d.jpg

Monday, March 31, 2008

ImageMagickで、透過PNG画像に半透明の縁取りをつける

透過PNG画像に半透明の縁取りをつけるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
rem 半透明の縁取りを透過PNGに追加
%im%\convert.exe sample2.png -matte -channel RGBA -blur 0x1 -fx "p==0?0:#bbddffa0" sample2.png -composite sample350a.png
rem 重ねあわせ例
%im%\convert.exe sf.jpg sample350a.png -geometry +50+50 -composite sample350b.png

上記バッチファイルでは、元画像をぼかして、ピクセル値が0以上を指定の色に置き換え、
元画像と重ね合わせています。

元画像(sample2.png)


出力画像(sample350a.png)


重ね合わせ例(sample350b.png)


半透明の縁取りをぼかすには、以下のバッチファイルのように半透明の縁取りを作成してから
さらに-blurでぼかしをかけます(2番目の-blur 0x1オプション)。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
rem ぼかした半透明の縁取りを透過PNGに追加
%im%\convert.exe sample2.png -matte -channel RGBA -blur 0x1 -fx "p==0?0:#bbddffa0" -blur 0x1 sample2.png -composite sample350c.png
rem 重ねあわせ例
%im%\convert.exe sf.jpg sample350c.png -geometry +50+50 -composite sample350d.png

出力画像(sample350c.png)


重ね合わせ例(sample350d.png)


関連項目
ImageMagickで画像を縁取りする
ImageMagickで、透過PNGの切り抜き画像からシールっぽい画像を生成する

Sunday, March 30, 2008

ImageMagickで、凹んだ影つきボタンを描画する

凹んだ影つきボタンを描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe -size 110x30 xc:#d0d0d0 -pointsize 12 -gravity center -draw "text 0,0 'Search'" -gravity northwest -matte -channel rgba ( -size 110x30 xc:white -fill black +antialias -draw "roundrectangle 5,5 104,24 8,8" -transparent black ) ( +clone -background #000000 -shadow 40x2+3+3 ) -swap 1,2 -mosaic -crop 100x20+5+5 sample349a.png

上記バッチでは、以下の処理を実行しています。
1.灰色背景に文字列を描画
2.白背景に黒の角丸四角を描画して、黒色を透明に変換
3.2に対して影付け
4.2と3を入れ替え重ね合わせ、座標(x=5,y=5)から幅100px高さ20pxを切り取っています。

出力画像(sample349a.png)