Sunday, March 29, 2009

groovyで画像に等高線をつける

groovyで画像に等高線をつけるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample836a.png", 100, 100){
antialias("on")
rect( x: 0, y: 0, width: 100, height: 100,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sample3b.jpg' )
filters {
contour(levels:10, scale:2, offset:0 )
}
}
}


元画像(sample3b.jpg)


出力画像(sample836a.png)
groovyで等高線をつけた画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して画像に等高線をつける

Saturday, March 28, 2009

pycairoをWindowsにインストール

pycairoをWindowsにインストールするには、以下の設定を行います。

1.ファイルの入手
Python(既にインストールしてあれば必要なし)
http://www.python.org/download/
Python 2.6.1 Windows installer (Windows binary -- does not include source)

GTK+
http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.16/
gtk+-bundle_2.16.0-20090317_win32.zip

pycairo
http://ftp.gnome.org/pub/gnome/binaries/win32/pycairo/1.4/
pycairo-1.4.12-2.win32-py2.6.exe

2.Pythonのインストール(既にインストールしてあれば必要なし)
python-2.6.1.msiを実行してpythonをインストール

3.pycairoのインストール
pycairo-1.4.12-2.win32-py2.6.exeを実行してpycairoをインストール

4.GTK+のインストール
gtk+-bundle_2.16.0-20090317_win32.zipを解凍
<解凍したディレクトリ>\gtk+-bundle_2.16.0-20090317_win32\binをパスに追加
コマンドプロンプトで以下のコマンドを入力
pkg-config --cflags gtk+-2.0

5.おしまい

pycairoを使用して、以下のコードで直線を描画できます。

# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
ctx = cairo.Context(surface)
ctx.set_source_rgb(0xbb/float(0xff), 0xdd/float(0xff), 0xff/float(0xff))
ctx.move_to(0,0)
ctx.line_to(200,200)
ctx.set_line_width(10)
ctx.stroke()
surface.write_to_png('sample998a.png')

出力画像


関連項目
pycairoのまとめ

pycairoで点線を描画する

ImageMagickで立体的な吹き出しを描画する

ImageMagickで立体的な吹き出しを描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16
%im%\convert.exe sf.jpg ( -size 200x200 xc:none -fill white -draw "ellipse 100,80,50,30,0,360 polygon 80,100,90,120, 90,100" -shade 135x23 -blur 0x2 -normalize -matte -channel rgba ) -font Tahoma -pointsize 14 -draw "text 60,85 'San Francisco'" -compose overlay -composite sample906b.png

元画像(sf.jpg)


出力画像(sample906b.png)


関連項目
ImageMagickで、半透明グラデーションの吹き出しを描画する
ImageMagickで、明度を変えた吹き出しを描画する
ImageMagickとPHPで立体的な吹き出しを描画する (Imagickによる同様の処理)

groovyで画像の減色をする

groovyで画像の減色をするには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample833a.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 {
quantize(numColors: 64)
}
}
}


元画像(sf.jpg)


出力画像(sample833a.png)
groovyで減色した画像

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

Friday, March 27, 2009

groovyで画像の端を折る

groovyで画像の端を折るには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample837a.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 {
curl(transition:0.1, angle:210, radius:4 )
}
}
}


元画像(sf.jpg)


出力画像(sample837a.png)
groovyで端折処理した画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して画像に折り目をつける

Thursday, March 26, 2009

groovyで画像を拡散させる

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample832a.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 {
diffuse(scale: 10)
}
}
}


元画像(sf2.jpg)


出力画像(sample832a.png)
groovyで拡散させた画像

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

関連項目
ScriptomとImageMagickで画像を拡散させる (ScriptomとImageMagickでの同様の処理)
Java2DとJava Image Filters(pixels)を使用して画像を拡散させる

Wednesday, March 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>sample910(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 画像に半透明の濃淡をつける */

$im = new Imagick("sf.jpg");

/* プラズマフラクタル画像 */
$im2 = new Imagick();
$im2->newPseudoImage($im->getImageWidth(),
$im->getImageHeight(), 'plasma:fractal');
$im2->setImageColorspace(Imagick::COLORSPACE_GRAY);
$im2->setImageMatte(true);
$im3 = $im2->fxImage("r", Imagick::CHANNEL_ALPHA);
/* 切り取り */
$im3->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);
$im3->writeImage('sample910a.png');

/* 他の画像と重ね合わせ */
$im4 = new Imagick();
$im4->newPseudoImage($im->getImageWidth(),
$im->getImageHeight(), "pattern:CHECKERBOARD");

/* 重ね合わせ */
$im4->compositeImage($im3, Imagick::COMPOSITE_OVER, 0, 0,
Imagick::CHANNEL_ALL);

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

</body>
</html>

元画像(sf.jpg)


出力画像1(sample910a.png)


出力画像2(sample910b.png)


関連項目
ImageMagickで、画像に半透明の濃淡をつけて重ね合わせる (convertコマンドによる同様の処理)
ImageMagickとPHPを使用して画像に濃淡をつける

Tuesday, March 24, 2009

groovyで反射した水面のような画像を生成する

groovyで反射した水面のような画像を生成するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample838a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
filters {
caustics(scale:32, brightness:15,
turbulence:0.9, amount:1.1, dispersion:1.0,
time: 0.1, samples:10 )
}
}
}


反射した水面のような画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して反射した水面のような画像を生成する

ImageMagickで画像から立体的なタイル画像に変換する

ImageMagickで画像から立体的なタイル画像に変換するには、以下のバッチファイルを実行します。

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

rem 角丸四角のタイルパターン作成
%im%\convert.exe -size 40x40 xc:black -fill white -draw "roundrectangle 2,2,37,37,4,4" sample905a.png
%im%\convert.exe -size 200x200 tile:sample905a.png -matte -channel a -fx "r" sample905b.png

%im%\convert.exe sample905b.png -matte -channel rgba sf.jpg -compose src_in -composite -modulate 140 -colorspace gray -fill #fad759 -colorize 50%% ( sample905b.png -shade 135x23 -blur 0x2 -normalize -matte -channel rgba ) -swap 0,1 -compose overlay -composite sample905c.png

元画像(sf.jpg)


出力画像(sample905c.png)


関連項目
ImageMagickで画像を角丸四角タイルパターンで切り取る
ImageMagickで画像をグレースケールの立体的な角丸四角に変換する
RMagickで画像を立体的なタイル風に変換する (RMagickによる同様の処理)

groovyで木目調の画像を生成する

groovyで木目調の画像を生成するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample831a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
filters {
wood(rings: 0.5, scale:200, stretch:8.0, angle:10, turbulence:0.2, fibres:0.5)
}
}
}


出力画像(sample831a.png)
groovyで生成した木目調の画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して木目調の画像を生成する

Monday, March 23, 2009

groovyで画像を水面下のようにゆらす

groovyで画像を水面下のようにゆらすには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample839a.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 {
swim(amount: 10, scale:32, stretch:10,
angle:10, turbulence:1.0, time: 0.1)
}
}
}


元画像(sf2.jpg)


出力画像(sample839a.png)
groovyで水面下のようにゆらした画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して画像を水面下のように揺らす

Sunday, March 22, 2009

groovyで画像にグローフィルタをかける

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample830a.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 {
glow(amount: 0.3)
}
}
}


元画像(sf2.jpg)


出力画像(sample830a.png)
groovyでグローフィルタをかけた画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して画像にグローフィルタをかける

Saturday, March 21, 2009

groovyで画像を球面処理する

groovyで画像を球面処理するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample840a.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 {
sphereDistort(refractionIndex: 1.9,
radius:80, centreX:0.6, centreY:0.6)
}
}
}


元画像(sf2.jpg)


出力画像(sample840a.png)
groovyで球面処理した画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して球面処理をおこなう

Friday, March 20, 2009

ImageMagickで透明な文字列を描画する - その2

ImageMagickでantialiasを効かせて透明な文字列を描画するには、以下のバッチファイルを実行します。

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

%im%\convert.exe sf.jpg ( -size 150x150 xc:white -matte -fill black -font Tahoma -pointsize 120 -gravity center -draw "text 0,0 'SF'" -channel a -fx "r" -channel rgb -fx "#BBDDFF" ) -composite sample904a.png

%im%\convert.exe sf.jpg ( -size 150x150 xc:white -matte -fill black -font Tahoma -pointsize 120 -gravity center -draw "text 0,0 'SF'" -channel a -fx "r*0.5" -channel rgb -fx "#000000" ) -composite sample904b.png

出力画像1(sample904a.png)


出力画像2(sample904b.png)


関連項目
ImageMagickで透明な文字列を描画する

groovyで画像の上に影付き文字列を描画する

groovyで画像の上に影付き文字列を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample829a.png", 200, 200){
antialias("on")
image(file: "sf.jpg")
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 26))
text( x:10, y:80,
text: "San Francisco",
fill: color("#ffffff"),
borderColor: no
){
filters {
dropShadow()
}
}
}


元画像(sf.jpg)


出力画像(sample829a.png)
groovyで描画した影付き文字列


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

関連項目
groovyで透明な文字列を描画する
groovyで文字列をガラスのように描画する
groovyで立体的な文字列を描画する
groovyで画像の上に半透明の文字列を描画する
groovyで光の放射を描画する
SVGRendererで文字列にドロップシャドウをつける (SVGRendererでの同様の処理)

Thursday, March 19, 2009

groovyで光の放射を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample841a.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 {
sparkle(rays:25, amount:55, randomness:50,
color: color("#ffffff"))
}
}
}


元画像(sf.jpg)


出力画像(sample841a.png)
groovyで描画した光の放射

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

関連項目
Java2DとJava Image Filters(pixels)を使用して光の放射を描画する

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>sample909(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 画像の端をグラデーションで着色する */
/* 余白 */
$padx = 10;
$pady = 10;

$im = new Imagick("sf.jpg");
$w = $im->getImageWidth();
$h = $im->getImageHeight();

$im2 = new Imagick();
$im2->newPseudoImage($w, $h, "xc:none");
/* 余白を残して円描画 */
$idraw = new ImagickDraw();
$idraw->ellipse($w/2, $h/2, $w/2-$padx,
$h/2-$pady, 0, 360);
$im2->drawImage($idraw);
$im2->blurImage(0,30);
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);

/* 着色 */
$im->tintImage(new ImagickPixel("#ddee33"),
new ImagickPixel("#f0f0f0"));

/* 重ね合わせ */
$im->compositeImage($im2, Imagick::COMPOSITE_OVER, 0, 0,
Imagick::CHANNEL_ALL);

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample909a.png)


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

Wednesday, March 18, 2009

groovyで画像にマキシマムフィルタを適用する

groovyで画像にマキシマムフィルタを適用するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample828a.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 {
maximum()
}
}
}


元画像(sf.jpg)


出力画像(sample828a.png)
groovyでマキシマムフィルタを適用した画像

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

関連項目
groovyで画像にミニマムフィルタをかける
groovyで画像にメディアンフィルタをかける
groovyで画像にマーブルフィルタをかける

Tuesday, March 17, 2009

im4javaで画像を連結する

im4javaで画像を連結するには、以下のコードを実行します。


import java.util.*;
import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.97.0-bin.tar.bz2を解凍してim4java-0.97.0.jarはclasspathに通す
public class Im4java7
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

// 上下に連結
IMOperation op = new IMOperation();
op.addImage("sample3b.jpg");
op.addImage("sample6.jpg");
op.append();
op.addImage("sample944a.png");
convert.run(op);

// 左右に連結
IMOperation op2 = new IMOperation();
op2.addImage("sample3b.jpg");
op2.addImage("sample6.jpg");
op2.p_append();
op2.addImage("sample944b.png");
convert.run(op2);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.97
static class WindowsConvertCmd extends ImageCommand
{
public WindowsConvertCmd()
{
setCommand("cmd");
setCommand("/c");
setCommand("convert");
/* another way
setCommand("C:\\Program Files\\ImageMagick-6.4.9-Q16\\convert");
*/
}
}

}


元画像1(sample3b.jpg)


元画像2(sample6.jpg)


出力画像1(sample944a.png)
im4javaで縦に連結した画像

出力画像2(sample944b.png)
im4javaで横に連結した画像

関連情報
im4javaのまとめ

im4javaで画像を円形に切り取る

im4javaのホームページ
im4java

groovyで画像を油絵調に変換する

groovyで画像を油絵調に変換するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample842a.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 {
oil(range: 2, levels:8)
}
}
}


元画像(sf2.jpg)


出力画像(sample842a.png)
groovyで油絵調に変換した画像

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

関連項目
groovyで万華鏡のような画像を生成する

Monday, March 16, 2009

ImageMagickで画像を磨りガラスのように切り取る

ImageMagickで画像を磨りガラスのようにざらざらとした質感で円形に切り取るには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16
%im%\convert.exe sf.jpg ( -size 200x200 xc:none -matte -channel rgba -fill white -draw "ellipse 100,100 85,85 0,360" -negate -blur 0x10 -spread 3 ) -composite sample899a.png

元画像(sf.jpg)


出力画像(sample899a.png)


関連項目
RMagickで画像を円形に切り取って周囲を磨りガラスのようにする (RMagickでの同様の処理)

groovyで万華鏡のような画像を生成する

groovyで万華鏡のような画像を生成するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample827a.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 {
kaleidoscope(sides:6, angle:20, angle2:50,
centreX:0.5, centreY:0.5, radius:100)
}
}
}


元画像(sf2.jpg)


出力画像(sample827a.png)
groovyで生成した万華鏡のような画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して万華鏡のような画像を生成する

Sunday, March 15, 2009

im4javaで画像を円形に切り取る

im4javaで画像を円形に切り取るには、以下のコードを実行します。


import java.util.*;
import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.96.0-bin.tar.bz2を解凍してim4java-0.96.0.jarはclasspathに通す
public class Im4java6
{
public static void main(String args[])
throws Exception
{
try
{
IMOperation op = new IMOperation();
op.verbose();
op.addImage("sf.jpg");

IdentifyCmd identify = new IdentifyCmd();
ArrayListOutputConsumer output =
new ArrayListOutputConsumer();
identify.setOutputConsumer(output);
identify.run(op);
ArrayList<String> lines = output.getOutput();

int width = 0;
int height = 0;
for(String line:lines){
if( line.startsWith(" Geometry: ") ){
if( line.indexOf("+") != -1 ){
String sz[] = line.substring(
" Geometry: ".length(),
line.indexOf("+")
).split("x");
width = new Integer(sz[0]);
height = new Integer(sz[1]);
}
}
}

// 画像サイズと同じ大きさの円で切り取り
IMOperation op2 = new IMOperation();
op2.size(new Integer(width), new Integer(height));
op2.addImage("xc:none");
op2.alpha("activate").channel("rgba");
op2.fill("white");
op2.draw("ellipse " + (width/2) +
"," + (height/2) + "," + (width/2-1) +
"," + (height/2-1) + ",0,360");
op2.addImage("sf.jpg");
op2.compose("src_in").composite();
op2.addImage("sample923a.png");

// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();
convert.run(op2);


}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.96
static class WindowsConvertCmd extends ImageCommand
{
public WindowsConvertCmd()
{
setCommand("cmd");
setCommand("/c");
setCommand("convert");
/* another way
setCommand("C:\\Program Files\\ImageMagick-6.4.9-Q16\\convert");
*/
}
}

}


元画像(sf.jpg)


出力画像(sample923a.png)


関連情報
im4javaのまとめ

im4javaで画像を角丸四角に切り取る

im4javaのホームページ
im4java

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>sample908(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 画像をタイル配置した角丸四角で切り取る */
/* 角丸四角サイズ */
$rw = 30;
$rh = 20;
/* 余白 */
$padx = 1;
$pady = 1;
/* 角丸サイズ */
$rx = 5;
$ry = 5;

/* 角丸四角イメージ作成 */
$idraw = new ImagickDraw();
$idraw->pushPattern('tile', 0, 0, $rw, $rh);
$idraw->roundrectangle($padx,$pady,
$rw-$padx-1, $rh-$pady-1, $rx, $ry);
$idraw->popPattern();

$im = new Imagick("sf.jpg");
/* タイルパターンにして配置 */
$idraw->setFillPatternURL('#tile');
$im2 = new Imagick();
$im2->newPseudoImage($im->getImageWidth(),
$im->getImageHeight(), "xc:none");
$idraw->rectangle(0, 0, $im->getImageWidth(),
$im->getImageHeight());
$im2->drawImage($idraw);

$im2->compositeImage($im,
Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);
$im2->writeImage('sample908a.png');
$im2->destroy();
$im->destroy();
?>
<img src="sample908a.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像(sample908a.png)


関連項目
ImageMagickで画像を角丸四角タイルパターンで切り取る (convertコマンドでの同様の処理)
ImageMagickとPHPで画像をタイル配置する

groovyで画像を点状に変換する

groovyで画像を点状に変換するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample843a.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 {
pointillize(fadeEdges: false,
fuzziness:0.2)
}
}
}


元画像(sf.jpg)


出力画像(sample843a.png)
groovyで点状に変換した画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して画像を点状に変換する