Saturday, February 07, 2009

RMagickで画像を高低差のあるタイルに貼り付けたように加工する

RMagickで画像を高低差のあるタイルに貼り付けたように加工するには、以下のコードを実行します。

require 'RMagick'
include Magick

# 凸凹タイルに貼り付けたように加工

images = ImageList.new
images.new_image(20, 20){
self.background_color = "white"
}
images[0] = images.fx("rand()", RedChannel)
images[0] = images.fx("r", GreenChannel)
images[0] = images.fx("r", BlueChannel)
images2 = ImageList.new("sf.jpg")

images[0] = images.resize(images2[0].columns, images2[0].rows, PointFilter)
images[0].alpha = ActivateAlphaChannel
images[0] = images.fx("(i%10==0)||(j%10==0)?0.6:0.3", AlphaChannel);
images2.composite(images[0], CenterGravity, 0, 0,
OverCompositeOp).write("sample893a.png")
exit

元画像(sf.jpg)


出力画像(sample893a.png)
RMagickで凸凹タイルに貼り付けたような効果

動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、画像を凸凹タイルに貼り付けたように加工する

ImageMagickで文字が透明なタブを描画する

ImageMagickで文字が透明なタブを描画するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 200x200 xc:black -fill white -draw "roundrectangle -5,30,49,59,6,6" -font Tahoma -pointsize 30 -fill black -draw "text 10,56 'SF'" -matte -channel a -fx "p.r" -channel rgb -fx "#E8F0F8" ( +clone -background #000000 -shadow 60x3+2+2 ) sf.jpg -swap 0,2 -flatten sample768a.png


元画像(sf.jpg)


出力画像(sample768a.png)
ImageMagickで透明な文字のタブを描画

関連項目
ImageMagickで上部がギザギザになったタブ画像を生成する
ImageMagickで透過タブ画像を作成する

groovyで四隅の角丸を指定して四角を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample808a.png", 200, 200){
antialias("on")
roundRect( x:10, y:10, width:180, height:180,
topLeftHeight: 10, topLeftWidth:10,
topRightHeight: 20, topRightWidth:20,
bottomLeftHeight: 30, bottomLeftWidth:30,
bottomRightHeight: 40, bottomRightWidth:40,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample808a.png)
groovyで四隅の角丸を指定した四角形


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

関連項目
groovyで四角を描画する
groovyで角丸四角を描画する
groovyで正多角形を描画する
groovyでサイの形を描画する

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で不規則な筋状の画像を生成する