Friday, February 06, 2009

ImageMagickで画像を角丸四角タイルパターンで切り取る

ImageMagickで画像を角丸四角タイルパターンで切り取るには、以下のバッチファイルを実行します。

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

rem 透過PNGで角丸四角の画像を作成
%im%\convert.exe -size 30x25 xc:black -fill white -draw "roundrectangle 1,1,28,23,4,4" sample767a.png
rem タイル配置して切り取り
%im%\convert.exe -size 300x225 tile:sample767a.png -matte -channel a -fx "p.r" sf2.jpg -compose src_in -composite sample767b.png
rem 影付け
%im%\convert.exe -size 303x228 xc:white ( sample767b.png -background #000000 -shadow 60x2+2+2 ) sample767b.png -flatten sample767c.png


元画像(sf2.jpg)


出力画像(sample767b.png)
角丸四角タイルパターンで切り取った画像

出力画像(sample767c.png):影付けをした出力

groovyで画像にメディアンフィルタをかける

groovyで画像にメディアンフィルタをかけるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample871a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf.jpg' )
filters {
median()
}
}
}


元画像(sf.jpg)


出力画像(sample871a.png)
groovyでメディアンフィルタをかけた画像

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで画像にノイズをかける
groovyで画像を台形変形させる

Thursday, February 05, 2009

ImageMagickで画像の端をグラデーションで着色する

ImageMagickで画像の端をグラデーションで着色するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 300x225 xc:none -matte -channel rgba -fill white -draw "ellipse 140,110,100,100,0,360" -blur 0x20 sf2.jpg -compose src_in -composite ( sf2.jpg -fill #aaccff -tint 90 ) -swap 0,1 -compose src_over -composite sample766a.png

元画像(sf2.jpg)


出力画像(sample766a.png)


関連項目
ImageMagickで、写真を黄色っぽく着色して端を暗くする
ImageMagickで、端が半透明の円形に画像を切り取る

groovyでサイの形を描画する

groovyでサイの形を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample807a.png", 200, 200){
antialias("on")
rhinoShape( x:0, y:10, width:200, height:180,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample807a.png)
groovyで描画したサイ

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで車の形を描画する
groovyで魚型を描画する
groovyでイルカの形を描画する

Wednesday, February 04, 2009

ImageMagickとPHPで不規則な波線を描画する

ImagickでPで不規則な波線を描画するには、以下のコードを実行します。


<!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>sample765(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 座標を少しずつずらして、複数のベジェ曲線を描画 */

/* 中央y座標 */
$cy = 25;
/* 繰り返し数 */
$ct=4;
/* 線の色 */
$sc='#88bbff';
/* x座標の揺らぎ最小値 */
$mindx = -5;
/* y座標の揺らぎ最大値 */
$maxdx = 5;
/* y座標の揺らぎ最小値 */
$mindy = -5;
/* y座標の揺らぎ最大値 */
$maxdy = 5;
/* 振幅 */
$dy = 15;
$dx = 20;

$im = new Imagick();
$im->newPseudoImage(300, 50, "xc:none");

$idraw = new ImagickDraw();
$idraw->setStrokeColor($sc);
$idraw->setStrokeWidth(3);
$idraw->setFillColor('none');

$lx = 0;

for($ind=0;$ind<$ct;$ind++){
$points[] = array(
'x' => $lx,
'y' => $cy
);
$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy-$dy
);
$points[] = array(
'x' => $lx+rand($mindx,$maxdx),
'y' => $cy-$dy+rand($mindy, $maxdy)
);

$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy
);

$idraw->bezier($points);
$points = null;



$points[] = array(
'x' => $lx,
'y' => $cy
);
$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy+$dy
);
$points[] = array(
'x' => $lx+rand($mindx,$maxdx),
'y' => $cy+$dy+rand($mindy, $maxdy)
);

$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy
);
$idraw->bezier($points);
$points = null;

}

$im->drawImage($idraw);
$im->blurImage(0,3);

$im->writeImage('sample765a.png');
$im->destroy();
?>
<img src="sample765a.png" /><br />

</body>
</html>


出力画像(sample765a.png)


関連項目
ImageMagickとPHPで3色モノトーンの角丸四角画像に変換する
ImageMagickとPHPで複数の画像の境界をぼかして連結する

groovyで画像にミニマムフィルタをかける

groovyで画像にミニマムフィルタをかけるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample870a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf.jpg' )
filters {
minimum()
}
}
}


元画像(sf.jpg)


出力画像(sample870a.png)


動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで画像にモザイクをかける

Tuesday, February 03, 2009

ImageMagickで画像を渦巻き模様で切り取る

ImageMagickで画像を渦巻き模様で切り取るには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 200x200 xc:white -matte -channel rgba -fill black -draw "ellipse 100,100,80,80,0,360" -virtual-pixel background -background white -blur 0,10 -wave 20,20 -swirl 800 sample764a.png

%im%\convert.exe -size 200x200 xc:none -matte -channel rgba -fill white -draw "ellipse 100,100,80,80,0,360" -virtual-pixel background -background none -blur 0,10 -wave 20,20 -swirl 800 -resize 200x200! sf.jpg -compose src_in -composite sample764b.png

元画像(sf.jpg)


出力画像1(sample764a.png):切り取りマスク


出力画像2(sample764b.png)
渦巻き模様で切り取り

RMagickで画像を任意の2色のグラデーションの画像に変換する

RMagickで画像を任意の2色のグラデーションの画像に変換するには、以下のコードを実行します。

require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images[0] = images.fx("intensity").normalize()
images.read("gradient:#FFFF10FF-#3070A0FF"){
self.size = "1x2"
}
images.fx("v.p{0,p}").write("sample891a.png")
exit


元画像(sf.jpg)


出力画像(sample891a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで画像を任意の2色グラデーションの画像に変換する (convertコマンドでの同様の処理)
RMagickで虹色グラデーションの文字列を描画する

groovyで正多角形を描画する

groovyで正多角形を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

// 正多角形を描画
def gr = new GraphicsRenderer()
gr.renderToFile("sample806a.png", 200, 200){
antialias("on")
regularPolygon( cx:100, cy:100, radius:80, sides:5,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample806a.png)
groovyで描画した正多角形

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで円を描画する
groovyで楕円を描画する
groovyで直線を描画する
groovyで四角を描画する
SVGRendererで正多角形を描画する (SVGRendererでの同様の処理)

Monday, February 02, 2009

ImageMagickでバンド状の半透明グラデーション円で画像を切り取る

ImageMagickでバンド状の半透明グラデーション円で画像を切り取るには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 200x200 xc:none -matte -channel rgba -fill #80808080 -draw "ellipse 100,100,70,70,0,360" -draw "ellipse 100,100,80,80,0,360" -draw "ellipse 100,100,90,90,0,360" -draw "ellipse 100,100,100,100,0,360" sf.jpg -compose src_in -composite sample763a.png

%im%\convert.exe sf2.jpg sample763a.png -composite sample763b.png


元画像(sf.jpg)


出力画像1(sample763a.png)


出力画像2(sample763b.png):ほかの画像と重ねあわせ例


関連項目
ImageMagickで、端が半透明の円形に画像を切り取る
ImageMagickで、波型の円で端をぼかして切り取る

groovyで画像にモザイクをかける

groovyで画像にモザイクをかけるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample869a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf.jpg' )
filters {
mosaic(blockSize: 4)
}
}
}


元画像(sf.jpg)


出力画像(sample869a.png)
groovyでモザイクをかけた画像

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyでノイズテクスチャを作成する
groovyで画像を台形変形させる
groovyで画像にスマート・ブラーをかける

Sunday, February 01, 2009

RMagickで濃淡模様が中央に吸い込まれるような画像を作成する

RMagickで濃淡模様が中央に吸い込まれるような画像を作成するには、以下のコードを実行します。

require 'RMagick'
include Magick

# env: ruby1.8.6, rmagick2.7.1
images = ImageList.new
images.read("plasma:fractal"){
self.size = "400x400"
}
images[0] = images.fx("intensity").normalize()
images.read("gradient:#3070A0FF-#403010FF"){
self.size = "1x2"
}
img2 = images.fx("v.p{0,p}").implode(1).crop(100,100,200,200)
img2.write("sample890a.png")

exit

出力画像(sample890a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickでプラズマフラクタル画像を生成する
RMagickで画像にハーフトーンのディザリングをかける
ImageMagickで、濃淡模様が中央に吸い込まれるような画像を生成する (convertコマンドによる同様の処理)

groovyで角丸四角を描画する

groovyで角丸四角を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample805a.png", 100, 100){
antialias("on")
rect( x:10, y:10, width:80, height:80,
arcWidth: 20, arcHeight:20,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample805a.png)
groovyで描画した角丸四角

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで円を描画する
groovyで楕円を描画する
groovyで直線を描画する
groovyで四角を描画する

SVGRendererで角丸四角を描画する (GraphicsBuilderのSVGRendererでSVG形式の角丸四角を描画する)

ImageMagickで紙のような質感の背景画像を作成する

ImageMagickで紙のような質感の背景画像を作成するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -seed 2009 -size 200x200 plasma:fractal -colorspace gray -fx "p*0.2+0.8" -spread 20 sample762a.png

出力画像(sample762a.png)
紙のテクスチャ

関連項目
ImageMagickで不規則な筋状の画像を生成する

Saturday, January 31, 2009

ImageMagickとPHPで3色モノトーンの角丸四角画像に変換する

ImageMagickとPHPで3色モノトーンの角丸四角画像に変換するには、以下のコードを実行します。

<!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>sample743(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像を三色モノトーンの角丸四角画像に変換する */
/* 右余白 */
$pright=5;
/* 角丸x */
$rx = 10;
/* 角丸y */
$ry = 10;
/* 左画像 */
$im = new Imagick("sf2.jpg");
$im->setImageColorspace(Imagick::COLORSPACE_GRAY);
//$im->colorizeImage("#c06030", 0.3);
$imb = $im->clone();
$imb->colorizeImage("#c06030", 1);
$imb->setImageOpacity(0.3);
$im->compositeImage($imb, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);
/* 左マスク作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$im2->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->setFillColor('white');
$idraw->roundrectangle(0, 0,
$im->getImageWidth()/3-$pright-1, $im->getImageHeight()-1, $rx, $ry);
$im2->drawImage($idraw);
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);
$imb->destroy();
$im->destroy();

/* 中央画像 */
$im = new Imagick("sf2.jpg");
$im->setImageColorspace(Imagick::COLORSPACE_GRAY);
//$im->colorizeImage("#50b030", 0.3);
$imb = $im->clone();
$imb->colorizeImage("#50b030", 1);
$imb->setImageOpacity(0.3);
$im->compositeImage($imb, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);
/* 中央マスク作成 */
$im3 = new Imagick();
$im3->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$im3->setImageMatte(true);
$idraw2 = new ImagickDraw();
$idraw2->setFillColor('white');
$idraw2->roundrectangle($im->getImageWidth()*1/3, 0,
$im->getImageWidth()*2/3-$pright-1, $im->getImageHeight()-1, $rx, $ry);
$im3->drawImage($idraw2);
$im3->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);
$imb->destroy();
$im->destroy();


/* 右画像 */
$im = new Imagick("sf2.jpg");
$im->setImageColorspace(Imagick::COLORSPACE_GRAY);
//$im->colorizeImage("#3040c0", 0.3);
$imb = $im->clone();
$imb->colorizeImage("#3040c0", 1);
$imb->setImageOpacity(0.3);
$im->compositeImage($imb, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);
/* 右マスク作成 */
$im4 = new Imagick();
$im4->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$im4->setImageMatte(true);
$idraw3 = new ImagickDraw();
$idraw3->setFillColor('white');
$idraw3->roundrectangle($im->getImageWidth()*2/3, 0,
$im->getImageWidth()-$pright-1, $im->getImageHeight()-1, $rx, $ry);
$im4->drawImage($idraw3);
$im4->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

$im2->compositeImage($im3, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);
$im2->compositeImage($im4, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);

$im2->writeImage('sample743a.png');
$im4->destroy();
$im3->destroy();
$im2->destroy();
$imb->destroy();
$im->destroy();
?>
<img src="sample743a.png" />

</body>
</html>

元画像(sf2.jpg)


出力画像()


関連項目
ImageMagickで画像を3色のモノトーンにした画像に変換する (convertコマンドで同様の処理)
ImageMagickとPHPで黄色だけを強調してにじませる

groovyで画像にノイズをかける

groovyで画像にノイズをかけるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample868a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf.jpg' )
filters {
noise(amount:30, density:0.3, distribution:0.3, monochrome:true)
}
}
}


元画像(sf.jpg)


出力画像(sample868a.png)
groovyでノイズをかけた画像

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyでノイズテクスチャを作成する

Friday, January 30, 2009

RMagickで画像にハーフトーンのディザリングをかける

RMagickで画像にハーフトーンのディザリングをかけるには、以下のコードを実行します。

require 'RMagick'
include Magick

# env: ruby1.8.6, rmagick2.7.1
images = ImageList.new("sf.jpg")
img2 = images[0].ordered_dither("h6x6a,16")
img2.write("sample761a.png")

exit

元画像(sf.jpg)


出力画像(sample761a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、画像にハーフトーンのディザリングをする (convertコマンドでの同様の処理。ほかのパターンの例など)

groovyで四角を描画する

groovyで四角を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample804a.png", 100, 100){
antialias("on")
rect( x:10, y:10, width:80, height:80,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample804a.png)
groovyで描画した四角

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで円を描画する
groovyで楕円を描画する
groovyで直線を描画する

SVGRendererで四角を描画する (SVGRedererで同様の処理を行う場合)
ScriptomとImageMagickで四角を描画する (ScriptomとImageMagickで四角を描画する場合)

Thursday, January 29, 2009

groovyでノイズテクスチャを作成する

groovyでノイズテクスチャを作成するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample867a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
filters {
noiseTexture()
}
}
}


出力画像(sample867a.png)
groovyで作成したノイズテクスチャ


動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで画像を台形変形させる

RMagickで文字列を右寄せ・左寄せする

RMagickで文字列を右寄せ・左寄せするには、以下のコードを実行します。

require 'RMagick'
include Magick

img = Image.read("label:日本語の\n文字列"){
self.background_color = "white"
self.fill = "#887070"
# パスは環境によって変えてね
self.font = "c:\\winnt\\fonts\\msgothic.ttc"
self.pointsize = 50
# 左寄せ
self.gravity = WestGravity
}
img[0].write("sample760a.png")

img2 = Image.read("label:日本語の\n文字列"){
self.background_color = "white"
self.fill = "#807070"
# パスは環境によって変えてね
self.font = "c:\\winnt\\fonts\\msgothic.ttc"
self.pointsize = 50
# 右寄せ
self.gravity = EastGravity
}
img2[0].write("sample760b.png")

exit

出力画像1(sample760a.png)


出力画像2(sample760b.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickで虹色グラデーションの文字列を描画する

Wednesday, January 28, 2009

ImageMagickとPHPで黄色だけを強調してにじませる

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>sample742(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像で黄色っぽいところ以外を白黒にして、黄色部分をにじませる */
$im = new Imagick("sf.jpg");
$im->modulateImage(80, 20, 100);
$im2 = new Imagick("sf.jpg");
$im2->setImageMatte(true);
$im3 = $im2->fxImage("(hue>0.11&&hue<0.19&&intensity<0.93&&saturation>0.5)?1:0", Imagick::CHANNEL_ALPHA);
$im3->modulateImage(100, 150, 100);
$im4 = new Imagick("sf.jpg");
$im4->setImageMatte(true);
$im5 = $im4->fxImage("(hue>0.11&&hue<0.19&&intensity<0.93&&saturation>0.5)?0.9:0", Imagick::CHANNEL_ALPHA);
$im5->blurImage(5,10,Imagick::CHANNEL_ALL);

$im->compositeImage($im3, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im->compositeImage($im5, Imagick::COMPOSITE_DEFAULT, 0, 0);

$im->writeImage('sample742a.png');
$im5->destroy();
$im4->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample742a.png" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample742a.png)


関連項目
ImageMagickとPHPで複数の画像の境界をぼかして連結する
ImageMagickとPHPで画像をグレースケールの立体的な角丸四角に変換する
ImageMagickで黄色だけを強調してにじませる (convertコマンドによる同様の処理)

groovyで車の形を描画する

groovyで車の形を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample803a.png", 200, 200){
antialias("on")
raceCarShape( x:0, y:40, width:200, height:120,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample803a.png)
groovyで描画した車

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで画像を台形変形させる
SVGRendererで車の形を描画する (SVGRendererでの同様の処理)

Tuesday, January 27, 2009

RMagickで虹色グラデーションの文字列を描画する

RMagickで虹色の文字列を描画するには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new("xc:blue", "xc:green", "xc:yellow",
"xc:orange", "xc:red"){
self.size = "1x1"
}
img2 = images.append(false);
img3 = Image.read("label:ImageMagick"){
self.background_color = "none"
self.fill = "white"
self.font = "Tahoma"
self.pointsize = 50
}
img4 = img2.resize(img3[0].columns, img3[0].rows)
img4.alpha = ActivateAlphaChannel
img5 = img4.composite(img3[0], 0, 0, DstInCompositeOp)

img5.write("sample759a.png")

exit


出力画像(sample759a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、虹色グラデーションの文字列を描画する (convertコマンドでの同様の処理)
Rmagickで半透明のぼかし文字列を描画する
RMagickで日本語文字列を描画する

groovyで画像を台形変形させる

groovyで画像を台形変形させるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample866a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf.jpg' )
filters {
perspective(x0:25, y0:30, x1:175, y1:30,
x2:200, y2:200, x3:0, y3:200)
}
}
}


元画像(sf.jpg)


出力画像(sample866a.png)
groovyで台形変形させた画像

動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで画像を指定された点に引き寄せる

Monday, January 26, 2009

RMagickで画像を文字列つきのポラロイド写真風にする

RMagickで画像を文字列つきのポラロイド写真風にするには、以下のコードを実行します。



require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images[0]["caption"] = "サンフランシスコ"
img2 = images[0].polaroid(5){
# 環境によってパスを変えてね
self.font = "c:\\winnt\\fonts\\msgothic.ttc"
self.pointsize = 20
self.gravity = SouthGravity
# 文字列の色
self.fill = "#787070"
# 枠の色
self.border_color = "#f8f8ff"
# 文字の背景
self.undercolor = "none"
# 影の色
self.shadow_color = "#202020"
}
img3 = Image.new(img2.columns, img2.rows){
self.background_color = "#f0f0f3"
}
img4 = img3.composite(img2, CenterGravity, 0, 0, OverCompositeOp);

img4.write("sample758a.png")

exit


元画像(sf.jpg)


出力画像(sample758a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickでアニメーションGIFを作成する
RMagickでパスを使用して左上と右下が丸くなった四角を描画する

groovyで二次曲線を描画する

groovyで二次曲線を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample802a.png", 200, 200){
antialias("on")
quadCurve( x1:200, y1:0, ctrlx:0, ctrly: 100,
x2:200, y2:200,
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample802a.png)


動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyでポリラインを描画する
SVGRendererで二次曲線を描画する (SVGRendererでの同様の処理)

Sunday, January 25, 2009

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>sample741(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 指定された複数画像ファイルの高さをそろえて連結する(境界はぼかす) */
$fns = array('sample3b.jpg', 'sf.jpg', 'sf2.jpg');
/* 画像の高さ */
$height = 100;
/* ぼかし幅 */
$bw = 20;
$im = new Imagick($fns[0]);
for($ind=1;$ind<count($fns);$ind++){
$imt = new Imagick($fns[$ind]);
$imt->setImageMatte(true);
$imt->resizeImage(0, $height, imagick::FILTER_MITCHELL, 1);
/* リサイズ後の幅がぼかし幅ピクセル未満は何もしない */
if( $imt->getImageWidth() >= $bw ){
/* alpha値をぼかし幅だけグラデーションになるように設定 */
$it = $imt->getPixelIterator();
foreach($it as $py => $line){
foreach($line as $px => $pixel){
if( $px < $bw ){
$pixel->setColorValue(Imagick::COLOR_ALPHA, $px/$bw);
}
}
$it->syncIterator();
}
/* 元画像を拡張 */
$im->setImageBackgroundColor('none');
$im->setImageExtent(
$imt->getImageWidth()-$bw+$im->getImageWidth(), $height);
$im->compositeImage($imt, Imagick::COMPOSITE_DEFAULT,
$im->getImageWidth()-$imt->getImageWidth(), 0,
Imagick::CHANNEL_ALL);
}
$imt->destroy();
}
$im->writeImage('sample741a.png');
$im->destroy();
?>
<img src="sample741a.png" />

</body>
</html>


元画像1(samlpe3b.jpg)


元画像2(sf.jpg)


元画像3(sf2.jpg)


出力画像(sample741a.png)


関連項目
ImageMagickとPHPで複数の画像ファイルの高さをそろえて連結する
ImageMagickとPHPで画像をグレースケールの立体的な角丸四角に変換する

groovyで画像を指定された点に引き寄せる

groovyで画像を指定された点に引き寄せるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample866a.png", 300, 225){
antialias("on")
rect( x: 0, y: 0, width: 300, height: 225,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf2.jpg' )
filters {
pinch(centreX:0.4, centreY:0.5, angle:30, amount:0.5, radius:150)
}
}
}


元画像(sf2.jpg)


出力画像(sample866a.png)


動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで画像をさまざまなパターンで塗りつぶす
groovyで画像の彩度を上げる