Sunday, May 04, 2008

ImageMagickで、2つの画像が交互にスクロールするアニメーションGIFを作成する

2つの画像が交互にスクロールするアニメーションGIFを作成するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.0-Q16

%im%\convert.exe sample3b.jpg -enhance f0.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+10 +repage -enhance f1.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+20 +repage -enhance f2.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+30 +repage -enhance f3.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+40 +repage -enhance f4.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+50 +repage -enhance f5.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+60 +repage -enhance f6.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+70 +repage -enhance f7.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+80 +repage -enhance f8.png
%im%\convert.exe sample3b.jpg sample6.jpg -append -crop 100x100+0+90 +repage -enhance f9.png
%im%\convert.exe sample6.jpg -enhance f10.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+10 +repage -enhance f11.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+20 +repage -enhance f12.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+30 +repage -enhance f13.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+40 +repage -enhance f14.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+50 +repage -enhance f15.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+60 +repage -enhance f16.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+70 +repage -enhance f17.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+80 +repage -enhance f18.png
%im%\convert.exe sample6.jpg sample3b.jpg -append -crop 100x100+0+90 +repage -enhance f19.png

%im%\convert.exe f0.png -coalesce -layers optimize-plus f0.png f0.png f0.png f0.png f1.png f2.png f3.png f4.png f5.png f6.png f7.png f8.png f9.png f10.png f10.png f10.png f10.png f10.png f11.png f12.png f13.png f14.png f15.png f16.png f17.png f18.png f19.png -set delay 20 -loop 0 sample377.gif

上記の例では、2つの画像を垂直方向に連結して(-append)、ずらして切り取り(-chop)をおこなって各フレームを生成してアニメーションGIFを作成しています。また、各フレームでノイズを減らすために-enhanceを使用しています。

元画像1(sample3b.jpg)


元画像2(sample6.jpg)


出力画像(sample377.gif)

ImageMagickとPHPで、画像の上下反転・左右反転をおこなう

画像の上下反転・左右反転をおこなうには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample377</title>
</head>
<body>
<?php
/* 上下反転 */
$im = new Imagick('sample3b.jpg');
$im->flipImage();
$im->writeImage('sample377a.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
/* 左右反転 */
$im = new Imagick('sample3b.jpg');
$im->flopImage();
$im->writeImage('sample377b.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>

<img src="sample377a.jpg" />
<img src="sample377b.jpg" />
</body>
</html>

filpImageメソッドで上下反転、flopImageメソッドで左右反転を行います。

元画像(sample3b.jpg)


出力画像1(sample377a.jpg)


出力画像2(sample377b.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
ImageMagickで画像の左右反転を行う (Convertコマンド)
WindowsでImageMagickをPHPから使用するための設定 (Imagick)

Saturday, May 03, 2008

ImageMagickとPHPで、画像をぼかす

Imagickを使用して画像をぼかすには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample376</title>
</head>
<body>
<?php
$im = new Imagick('sf.jpg');
$im->blurImage(0,5);
$im->writeImage('sample376a.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>

<img src="sample376a.jpg" />
</body>
</html>

元画像(sf.jpg)


出力画像(sample376a.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)

Friday, May 02, 2008

ImageMagickとPHPで画像に指定の色を着色する

画像に指定の色を着色するには以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample374</title>
</head>
<body>
<?php
$im = new Imagick('sf2.jpg');
$im->setImageMatte(true);
$im->tintImage(new ImagickPixel("#bbddff"),new ImagickPixel("#f0f0f0"));
$im->writeImage('sample375a.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample375a.jpg" />
</body>
</html>

上記の例では、tintImageメソッドを使用して水色っぽい色(#bbddff)に着色しています。

元画像(sf2.jpg)


出力画像(sample375a.jpg)


関連項目
ImageMagickで、画像を早朝っぽく加工する(Convertコマンド)
ImageMagickで、写真を黄色っぽく着色して端を暗くする (Convertコマンド)
WindowsでImageMagickをPHPから使用するための設定

Thursday, May 01, 2008

ImageMagickとPHPで、明度・彩度・色相を変更する

明度・彩度・色相を変更するには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample374</title>
</head>
<body>
<?php
/* 明度を70に設定 */
$im = new Imagick('sf.jpg');
$im->modulateImage(70,100,100);
$im->writeImage('sample374a.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

/* 彩度を150に設定 */
$im = new Imagick('sf.jpg');
$im->modulateImage(100,150,100);
$im->writeImage('sample374b.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

/* 色相を10に設定 */
$im = new Imagick('sf.jpg');
$im->modulateImage(100,100,10);
$im->writeImage('sample374c.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample374a.jpg" />
<img src="sample374b.jpg" />
<img src="sample374c.jpg" />
</body>
</html>

元画像(sf.jpg)


出力画像1(sample374a.jpg)


出力画像2(sample374b.jpg)


出力画像3(sample374c.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
ImageMagickで明るさを変更する (Convertコマンド)
ImageMagickで彩度を変える  (Convertコマンド)
ImageMagickで色相を変える (Convertコマンド)

Wednesday, April 30, 2008

ImageMagickとPHPで、画像に日本語の文字列を描画する

PHPで画像に日本語の文字列を描画するには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample373</title>
</head>
<body>
<?php
/* ファイルはUTF-8で保存してね */
$im = new Imagick('sf.jpg');
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont("c:\\winnt\\fonts\\msgothic.ttc");
/* フォントサイズ設定 */
$idraw->setFontSize(32);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$im->annotateImage($idraw, 0, 0, 0, "日本語");
$im->writeImage('sample373a.jpg');
/* $idraw->clear(); 2008/09/30追記:destroyと同様にClearDrawingWandを呼ぶので必要なし */
$idraw->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>

<img src="sample373a.jpg" />
</body>
</html>

元画像(sf.jpg)


出力画像(sample373a.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
WindowsでImageMagickをPHPから使用するための設定
ImageMagickとPHPで、画像からはみ出した影付き文字列を描画する

Monday, April 28, 2008

WindowsでImageMagickをPHPから使用するための設定

WindowsでImageMagickをPHPから使用するためには、以下の設定を行います。

環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

1. ImageMagickをインストール。Program Files配下などのスペースを含むパスにインストールしないこと。(例:c:\ImageMagick640Q16など)

2. Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)のインストール
http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ja
上記URLからダウンロードして、インストール。

3.php_imagickのインストール
以下のURLのMikko's blogからphp_imagick_dyn-Q16.dllをダウンロード。
http://valokuva.org/?page_id=50
php_imagick_dyn-Q16.dllをPHPのextディレクトリにコピー。

4. php.iniに以下の設定を追加(パスは環境に合わせて変更してください)
extension_dir = "C:\PHP525\ext"
extension=php_imagick_dyn-Q16.dll

5. OSのシステム環境変数にMAGICK_HOMEという環境変数名で
ImageMagickをインストールしたパスを指定。(例:C:/ImageMagick640Q16)

6. Windowsを再起動。

7. 以下のPHPファイルを作成し、ブラウザからアクセス。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample372</title>
</head>
<body>
<?php
$first = new Imagick('sf.jpg');
$second = new Imagick('sample3b.jpg');
$first->compositeImage($second, Imagick::COMPOSITE_DEFAULT, 10, 10);
$first->writeImage('sample372a.jpg');
?>

<img src="sample372a.jpg" />
</body>
</html>

元画像1(sf.jpg)


元画像2(sample3b.jpg)


出力画像(sample372a.jpg)


2009/05/04追記
「Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ」は「Microsoft Visual C++ 2008 Redistributable」でも動作する。
動作環境
Microsoft Windows 2003 Server SP2, Apache2.2.11, PHP5.2.9-2, ImageMagick6.5.2-0


2010/08/05追記
以下のページのDLLを使用して、XAMPP1.7.3でも動作する。
http://www.sk89q.com/2010/03/vc6-windows-binaries-for-imagick-2-3-0/
動作環境
Microsoft Windows 2003 Server SP2, XAMPP 1.7.3, ImageMagick6.6.3-2-Q16

ImageMagickで、画像を端がちぎられたようなスケッチ調の画像に変換する

画像を端がちぎられたようなスケッチ調の画像に変換するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.0-Q16
%im%\convert.exe -size 200x200 xc:none -fill white -draw "rectangle 10,10 189,189" -spread 5 -median 2 sf.jpg -compose src_in -composite xc:white +swap -composite -sketch 0x10+120 sample371a.png

上記バッチファイルでは、以下の処理を実行しています。
1. キャンバスサイズより小さめの四角を描画し、-spreadで拡散、メディアンフィルタでちぎったような領域を作成。
2. 1で元画像を切り抜いて、白背景と合成。
3. -sketchでスケッチ調に変換。

元画像(sf.jpg)


出力画像(sample371a.png)


rem セピアトーン
%im%\convert.exe -size 200x200 xc:none -fill white -draw "rectangle 10,10 189,189" -spread 5 -median 2 ( sf.jpg -sepia-tone 80%% ) -compose src_in -composite xc:white +swap -composite -sketch 0x10+120 sample371b.png

出力画像(sample371b.png)


関連項目
ImageMagickで手で切り取ったように不規則に画像を切り取る
RMagickで画像をセピア調のスケッチ画像に変換する (RMagickでの同様の処理)
ImageMagickとPHPで画像の端がちぎれたようなスケッチ調の画像に変換する (Imagickでの同様の処理)

Sunday, April 27, 2008

ImageMagickで、画像からはみ出して影付き文字列を描画する

画像からはみ出して影付き文字列を描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.0-Q16
%im%\convert.exe sf.jpg -gravity northwest -background white -splice 20x25 -fill #bbddff -font Tahoma -pointsize 35 -background none "label:San Francisco" ( +clone -background #000000 -shadow 40x2+3+3 ) -swap 1,2 -mosaic sample370a.jpg

上記のバッチファイルでは以下の処理を実行しています。
1. 元画像(sf.jpg)を読み込んで、-spliceで左20ピクセル、上25ピクセルの余白を追加。
2. Tahomaフォント、35ポイント、描画色#bbddff、背景色無しで文字列San Franciscoを描画。
3. 処理2の文字列を複製して、影付け。
4. 2と3を入れ替え、重ね合わせる

元画像(sf.jpg)


出力画像(sample370a.jpg)


関連項目
ImageMagickで、画像の上下左右に余白を追加する(-spliceの使い方)
ImageMagickで、日本語文字列から画像を生成する(labelで日本語を使用する方法)
ImageMagickとPHPで、画像からはみ出した影付き文字列を描画する

Saturday, April 26, 2008

ImageMagickで、画像に画像サイズを書き込む

画像に画像サイズを書き込むには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe sf.jpg -gravity northwest -fill black -stroke white -font Tahoma -pointsize 20 -annotate 0 "%%wx%%h" sample369a.jpg

%wで横幅、%hで高さを描画します。

元画像(sf.jpg)


出力画像(sample369a.jpg)

Friday, April 25, 2008

ImageMagickで、余白をつけて画像を連結する

余白をつけて画像を連結するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe sample3b.jpg -background #585050 -gravity east -splice 5x0 sample4.jpg +append -splice 5x0 sample6.jpg +append sample368a.jpg

上記バッチファイルでは、以下の処理を実行しています。
1. 元画像1(sample3b.jpg)に#585050の色で右側に5ピクセルの余白を追加。
2.元画像2(sample4.jpg)を横方向に連結して、右側に5ピクセルの余白を追加。
3.元画像3(sample6.jpg)を横方向に連結。

元画像1(sample3b.jpg)


元画像2(sample4.jpg)


元画像3(sample6.jpg)


出力画像1(sample368a.jpg)


連結した画像の上下左右に余白を追加するには、-borderオプションを使用します。
下の例では、上下左右に5ピクセルの余白を-backgroundの色で追加しています。
%im%\convert.exe sample3b.jpg -background #585050 -gravity east -splice 5x0 sample4.jpg +append -splice 5x0 sample6.jpg +append -bordercolor #585050 -border 5x5 sample368b.jpg

出力画像2(sample268b.jpg)


関連項目
ImageMagickで、画像の上下左右に余白を追加する

Thursday, April 24, 2008

ImageMagickで、画像の上下左右に余白を追加する

画像の上下左右に余白を追加するには、-spliceオプションを使用します。
どの位置に余白を追加するかは-gravityオプションで指定できます。
余白部分の色は-backgroundオプションで指定します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
rem 上側に10ピクセルの背景色でのスペースを追加
%im%\convert.exe sf.jpg -background #e2ddd4 -gravity north -splice 0x10 sample367a.png

元画像(sf.jpg)


出力画像(sample367a.png)


rem 左側に15ピクセルの背景色でのスペースを追加
%im%\convert.exe sf.jpg -background #e2ddd4 -gravity west -splice 15x0 sample367b.png

出力画像(sample367b.png)


rem 下側に20ピクセルの背景色でのスペースを追加
%im%\convert.exe sf.jpg -background #e2ddd4 -gravity south -splice 0x20 sample367c.png

出力画像(sample367c.png)


rem 右側に25ピクセルの背景色でのスペースを追加
%im%\convert.exe sf.jpg -background #e2ddd4 -gravity east -splice 25x0 sample367d.png

出力画像(sample367d.png)


2箇所に同時に余白を設定するには、以下のコマンドのようにします。
rem 右下に25ピクセルの背景色でのスペースを追加
%im%\convert.exe sf.jpg -background #e2ddd4 -gravity southeast -splice 25x25 sample367e.png

出力画像(sample367e.png)


関連項目
ImageMagickで、余白をつけて画像を連結する
ImageMagickで、画像からはみ出して影付き文字列を描画する
ImageMagickとPHPで画像に余白を追加する (Imagickでの同様の処理)

Wednesday, April 23, 2008

ImageMagickで、文字列にモーションブラーをかける

文字列にモーションブラーをかけるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
rem 左寄せ%im%\convert.exe -font Tahoma -pointsize 30 -fill #707070 -background #f0eee4 "label:ImageMagick" -gravity south -splice 0x20 -motion-blur 0x10+270 -fill #303030 -background none "label:ImageMagick" -gravity north -composite sample366a.png

上記バッチファイルでは、以下の処理を実行しています。
1. フォントをTahoma、30ポイントにし、描画色を#707070、背景を#f0eee4にし、ImageMagickというラベルを作成し、下側に20ピクセルの余白を追加します(-splice 0x20)。
2. 1の画像に対し、下向きのモーションブラーをかけます。
3. 描画色を#303030にし、背景色をなしにして、ImageMagickのラベルを再度生成し、2の画像と重ね合わせます。

出力画像(sample366a.png)


関連項目
ImageMagickで、写真に光が差し込んだような効果をつける (光をモーションブラーで生成)
ImageMagickでランダムな筋がだんだん消えていく模様を生成する
ImageMagickで1ピクセルのラインごとにモーションブラーをかける
ImageMagickで青っぽい部分以外が上下に揺れたような加工をする
ImageMagickで上下左右方向に徐々にモーションブラーをかける
ImageMagickとPHPで、文字列にモーションブラーをかける (Imagickでの同様の処理)


Tuesday, April 22, 2008

ImageMagickで、2値化した画像をストライプにする

2値化した画像をストライプにするには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe tree1.jpg -threshold 50%% -negate -matte -transparent black -fill #3070A0FF -opaque white -channel rgba -fx "j%%2==0?p:0" sample365a.png
rem 重ね合わせ例
%im%\convert.exe tree1.jpg ( sample365a.png -channel a -fx "p!=0?0.5:0" ) -composite sample365b.png

上記バッチファイルでは、以下の処理を実行しています。
1. 50%の閾値で2値化、反転(-negate)、黒色部分を透明に(-transparent black)、白色部分を#3070aoffという色に変換。偶数ピクセルの値を0に変換。
2. 元画像(tree1.jpg)と1の出力画像のアルファ値を0.5にした画像を重ね合わせ。

元画像(tree1.jpg)


出力画像(sample365a.png)

Monday, April 21, 2008

ImageMagickで、角丸四角のグラデーションにハーフトーンを重ね合わせる

角丸四角のグラデーションにハーフトーンを重ね合わせるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe -size 200x200 xc:none -fill white -draw "roundrectangle 0,0 199,199 15,15" -fx "s.p==0?0:(1-sin(pi*j/h))*0.5" -matte sample364a.png
%im%\convert.exe sample364a.png -ordered-dither h16x16o -blur 0x1 -matte -channel a -fx "p!=0?0.1:0" -channel rgba ( sample364a.png ) -swap 0,1 -composite sample364b.png

上記バッチファイルでは、以下の処理を実行しています。
1. 横200ピクセル、縦200ピクセルのキャンパスサイズで、角丸四角を描画し、上下が明るくなるように-fxで色を変更します。
2. h16x16oのthreshold mapを使用して、ハーフトーンのディザリングを行い、ぼかします(-blur)。
3. ピクセル値が0でないピクセルのalpha値に0.1を設定し、1の出力画像と重ね合わせます。

出力画像(sample364b.png)


関連項目
ImageMagickで上下グラデーションの角丸四角を描画する

Saturday, April 19, 2008

ImageMagickで、画像にハーフトーンのディザリングをする

画像にハーフトーンのディザリングをするには、-ordered-ditherオプションを
使用します。使用可能なthreshold mapは以下のコマンドで表示できます。
convert -list threshold

元画像(sf.jpg)


ハーフトーンのディザリングをするには、以下のバッチファイルを実行します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe sf.jpg -ordered-dither h4x4a sample364a.png

出力画像(sample364a.png)


%im%\convert.exe sf.jpg -ordered-dither h6x6a sample364b.png

出力画像(sample364b.png)


%im%\convert.exe sf.jpg -ordered-dither h8x8a sample364c.png

出力画像(sample364c.png)



threshold mapの後にレベルを指定することで、中間色の入ったハーフトーンになります。
%im%\convert.exe sf.jpg -ordered-dither h6x6a,4 sample364d.png

出力画像(sample364d.png)


%im%\convert.exe sf.jpg -ordered-dither h6x6a,8 sample364e.png

出力画像(sample364e.png)


%im%\convert.exe sf.jpg -ordered-dither h6x6a,16 sample364f.png

出力画像(sample364f.png)

ImageMagickで、元画像と90度回転させた元画像を交互に配置して背景画像を作成する

元画像と90度回転させた元画像を交互に配置して背景画像を作成するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe rectangles.png ( rectangles.png -rotate 90 ) +append ( rectangles.png -rotate 90 rectangles.png +append ) -append -write mpr:t1 +delete -size 300x200 tile:mpr:t1 sample362a.png

上記バッチファイルでは、以下の処理を実行しています。
1. 元画像(rectangles.png)と90度回転させた元画像を+appendオプションで水平方向に連結。
2. 90度回転させた元画像と元画像を+appendオプションで水平方向に連結。
3. 1と2の出力画像を-appendで垂直方向に連結。
4. 3の出力画像をメモリに保存して、削除。
5. 縦200ピクセル、横300ピクセルのキャンパスを作成して4で保存した画像をタイル配置。

元画像(rectangles.png)


出力画像(sample362a.png)




Thursday, April 17, 2008

ImageMagickとWSHで、枠線のついたバッジ画像を作成する

枠線のついたバッジ画像を作成するには、以下のスクリプトを実行します。

実行例
cscript sample361.vbs 32 100 100 90 80 #f0e8a0 orange 5 200 200 sample361.png

sample361.vbs
------------------------------------------
Set im = CreateObject("ImageMagickObject.MagickImage.1")
pi=3.14159

rem 分割数
par = Wscript.Arguments(0)
rem 中心x
cx = Wscript.Arguments(1)
rem 中心y
cy = Wscript.Arguments(2)
rem 半径(大)
rad1 = Wscript.Arguments(3)
rem 半径(小)
rad2 = Wscript.Arguments(4)
rem 描画色
fc = Wscript.Arguments(5)
rem ストローク色
sc = Wscript.Arguments(6)
rem ストローク幅
sw = Wscript.Arguments(7)
rem 出力サイズx
ox = Wscript.Arguments(8)
rem 出力サイズy
oy = Wscript.Arguments(9)
rem 出力ファイル名
ofile = Wscript.Arguments(10)

dr1=0
dr2=360/(par*2)
dat="polygon "
Do While dr2<360 p1x="int(cx-cos(2*pi*dr1/360)*rad1)" p1y="int(cy-sin(2*pi*dr1/360)*rad1)" p2x="int(cx-cos(2*pi*dr2/360)*rad2)" p2y="int(cy-sin(2*pi*dr2/360)*rad2)">0 then
dat=dat+","
end if

dat=dat & cstr(p1x) & "," & cstr(p1y) & "," & cstr(p2x) & "," & cstr(p2y)

dr1 = dr1 + 360/par
dr2 = dr2 + 360/par
Loop

im.Convert "-size", ox & "x" & oy, "xc:none", "-fill", fc, "-stroke", sc, "-strokewidth", sw, "-draw", dat, ofile

Set im = Nothing
------------------------------------------

出力画像(sample361.png)