Saturday, January 24, 2009

RMagickでパスを使用して左上と右下が丸くなった四角を描画する

RMagickでパスを使用して左上と右下が丸くなった四角を描画するには、以下のコードを実行します。

require 'RMagick'
include Magick

img = Image.new(100, 100){
self.background_color = "none"
}

dr = Draw.new
# 描画色
dr.fill = "#bbddff"
# パスを描画(SVGパスの形式で指定)
dr.path("M 0,10 A 10,10 0 0,1 10,0 L 99,0 L99,90 A 10,10 0 0,1 90,99 L 0,99 Z")
dr.draw(img);

img.write("sample757a.png")

exit

出力画像(sample757a.pn)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
Rmagickで画像を木炭画調に変換してグラデーションを適用する
RMagickで、画像を中心から上下へ徐々に大きく揺らす
RMagickで画像を台形変形させる

groovyでポリラインを描画する

groovyでポリラインを描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample801a.png", 200, 200){
antialias("on")
polyline( points: [198,0, 0,100, 198,198],
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample801a.png)



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

関連項目
groovyで直線を描画する
groovyで楕円を描画する
groovyでポリゴンを描画する

Friday, January 23, 2009

RMagickでアニメーションGIFを作成する

RMagickでアニメーションGIFを作成するには、以下のコードを実行します。

require 'RMagick'
include Magick

# アニメーションGIFを作成する
images = ImageList.new("sample3b.jpg", "sample4.jpg", "sample6.jpg")
images.iterations = 0
images.each do |img|
img.delay = 50
end

images.write("sample756a.gif")

元画像(sample3b.jpg)


元画像2(sample4.jpg)


元画像3(sample6.jpg)


出力画像(sample756a.gif)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickで画像を透過PNGのエッジ抽出画像に変換する
RMagickで画像の上に半透明グラデーションの斜線を描画する
ImageMagickでアニメーションGIFを出力する (convertコマンドによる同様の処理)

groovyで画像のポスタイラズをする

groovyで画像のポスタイラズをするには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample865a.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 {
posterize(numLevels:8)
}
}
}


元画像(sf.jpg)


出力画像(sample865a.png)
groovyでポスタライズした画像

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

関連項目
groovyで画像の彩度を上げる

Thursday, January 22, 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>sample740(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像をグレースケールの立体的な角丸四角に変換する */
/* 余白x */
$px=10;
/* 余白y */
$py=10;
/* 角丸x */
$rx=10;
/* 角丸y */
$ry=10;

$im = new Imagick("sf.jpg");
$im->setImageColorspace(Imagick::COLORSPACE_GRAY);
$im->modulateImage(160, 100, 100);
/* マスク作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
$idraw->setFillColor('white');
$idraw->roundrectangle($px, $py,
$im->getImageWidth()-$px-1, $im->getImageHeight()-$py-1, $rx, $ry);
$im2->drawImage($idraw);
$im3 = $im2->clone();
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);
/* 立体的な角丸四角作成 */
$im3->shadeImage(false, 135, 23);
$im3->blurImage(0, 2, Imagick::CHANNEL_ALL);
$im3->normalizeImage(Imagick::CHANNEL_ALL);
$im3->compositeImage($im2, Imagick::COMPOSITE_OVERLAY, 0, 0, Imagick::CHANNEL_ALL);

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample740a.png)


関連項目
ImageMagickで画像をグレースケールの立体的な角丸四角に変換する (convertコマンドによる同様の処理)
ImageMagickとPHPで手でちぎったように画像を切り取る
ImageMagickとPHPで画像の端がちぎれたようなスケッチ調の画像に変換する
ImageMagickとPHPで画像を角丸四角に切り取って文字入れする

groovyでポリゴンを描画する

groovyでポリゴンを描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample800a.png", 200, 200){
antialias("on")
polygon( points: [100,0, 0,198, 198,198],
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample800a.png)
groovyで描画したポリゴン

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

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

ScriptomとImageMagickでポリゴンを描画する (ScriptomとImageMagickによる同様の処理)

Wednesday, January 21, 2009

groovyで画像の彩度を上げる

groovyで画像の彩度を上げるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample864a.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 {
saturation(amount:1.5);
}
}
}


元画像(sf.jpg)


出力画像(sample864a.png)
groovyで彩度を上げた画像

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

関連項目
groovyで引っかいたような背景画像を作成する
groovyで画像をさまざまなパターンで塗りつぶす
groovyで画像を感光させたように加工する

RMagickで画像の上に半透明グラデーションの斜線を描画する

RMagickで画像の上に半透明グラデーションの斜線を描画するには、以下のコードを実行します。


require 'RMagick'
include Magick

# 画像に半透明グラデーションの斜線を描画する

images = ImageList.new("sf.jpg")
images2 = ImageList.new
images2 << Image.new(images[0].columns, images[0].rows){
self.background_color = "white"
}
images2[0].alpha = ActivateAlphaChannel
images2[0] = images2.fx("(i+j)%4==0?#BBDDFF:0")
images2[0] = images2.fx("(i+j)%4==0?p*(h-j)/h:0", AlphaChannel)

img3 = images[0].composite(images2[0], CenterGravity, 0, 0,
OverCompositeOp);

img3.write("sample755a.png")

exit


fxメソッドのi,jはx,y座標、hは画像の高さを示します。

元画像(sf.jpg)


出力画像(sample755a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickで画像を透過PNGのエッジ抽出画像に変換する
RMagickで、画像を中心から上下へ徐々に大きく揺らす

Tuesday, January 20, 2009

RMagickで画像を透過PNGのエッジ抽出画像に変換する

RMagickで画像を透過PNGのエッジ抽出画像に変換するには、以下のコードを実行します。

require 'RMagick'
include Magick

# 画像を透過PNGのエッジ抽出画像に変換する
images = ImageList.new("sf2.jpg")
images[0].colorspace = GRAYColorspace
images[0].alpha = ActivateAlphaChannel
img2 = images[0].enhance().enhance()
images[0] = img2.edge(1);
images[0] = images.fx("r", AlphaChannel)
images[0] = images.fx("#5588DD")
images[0].write("sample754a.png")

images2 = ImageList.new("sf2.jpg")
images2[0].colorspace = GRAYColorspace

img3 = images2[0].composite(images[0], NorthWestGravity, 0, 0, OverCompositeOp);
img3.write("sample754b.png")

exit

元画像(sf2.jpg)


出力画像1(sample754a.png):エッジ抽出画像を透過PNGにして、エッジ抽出に色付けした画像


出力画像2(sample754b.png):グレースケールにした元画像とエッジ抽出画像の重ね合わせ


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
Rmagickで画像を木炭画調に変換してグラデーションを適用する
ImageMagickで透過PNGのエッジ抽出画像を生成する (convertコマンドでの同様の処理)

groovyでピンを描画する

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



import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample799a.png", 200, 200){
antialias("on")
pin( cx:100, cy:100, radius: 20, height:80,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2,
angle: 45
)
}


出力画像(sample799a.png)
groovyで描画したピン

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

関連項目
groovyでバースト上にシェイプを塗りつぶす
groovyで足型を描画する
SVGRendererでピンを描画する (SVGRendererによる同様の処理)

Monday, January 19, 2009

groovyで引っかいたような背景画像を作成する

groovyで引っかいたような背景画像を作成するには、以下のコードを実行します。



import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample863a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
filters {
scratch(angle:10, angleVariation:0.8,
color: color("#c0c0c0"), density:0.9,
length:0.5, width:0.5, seed:2009)
}
}
}


出力画像(sample863a.png)
groovyで生成した引っかいたような画像

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

関連項目
groovyで画像に放射ブラーをかける
groovyで画像に編み目模様をつける

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>sample739(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 指定された複数画像ファイルの高さをそろえて連結する */
$fns = array('sample3b.jpg', 'sf.jpg', 'sf2.jpg');
$height=100;
$im = new Imagick($fns[0]);
for($ind=1;$ind<count($fns);$ind++){
$imt = new Imagick($fns[$ind]);
$imt->resizeImage(0, $height, imagick::FILTER_MITCHELL, 1);
$im->addImage($imt);
$im->setImageIndex(0);
$nim=$im->appendImages(false);
$imt->destroy();
$im->destroy();
$im = $nim;
}
$im->writeImage('sample739a.png');
$im->destroy();
?>
<img src="sample739a.png" />

</body>
</html>

出力画像(sample739a.png)


関連項目
ImageMagickとPHPで複数の画像の境界をぼかして連結する
ImageMagickとPHPで、複数の画像に余白をつけて連結する
ImageMagickとPHPで大きさの違う画像を連結する時の余白の色を指定する

Sunday, January 18, 2009

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

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

require 'RMagick'
include Magick

# 画像にモザイクをかける
images = ImageList.new("sf.jpg")
img2 = images[0].resize(images[0].columns/8, images[0].rows/8)
img3 = img2.resize(images[0].columns, images[0].rows, PointFilter)
img3.write("sample753a.png")

exit

元画像(sf2.jpg)


出力画像(sample753a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickでドット絵風の文字を描画する-その2

groovyで直線を描画する

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


import groovy.swing.j2d.*

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


出力画像(sample798a.png)
groovyで描画した直線

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

関連項目
groovyで円を描画する
groovyで楕円を描画する
ScriptomとImageMagickで直線を描画する (ScriptomとImageMagickで同様の処理)