Tuesday, January 13, 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>sample737(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像を縮小、回転させて背景画像と重ねあわせる */
$im = new Imagick("sf.jpg");
/* 縦横1/2にリサイズ */
$im->resizeImage($im->getImageWidth()/2,
$im->getImageHeight()/2, imagick::FILTER_MITCHELL, 1);
/* 生じるスペースの部分に透明を指定して画像を回転 */
$im->rotateImage('none', -20);
$im2 = new Imagick("sf2.jpg");
$im2->compositeImage($im, Imagick::COMPOSITE_DEFAULT, 170, 10, Imagick::CHANNEL_ALL);

$im2->writeImage('sample737a.png');

$im2->destroy();
$im->destroy();
?>
<img src="sample737a.png" />

</body>
</html>


元画像1(sf.jpg)


元画像2(sf2.jpg)


出力画像(sample737a.png)


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

関連項目
ImageMagickとPHPで画像を半透明にして重ね合わせる
ImageMagickとPHPで、画像に半透明角丸四角の枠をつける

Monday, January 12, 2009

JMagickでタイルパターンの文字列を描画する

JMagickでタイルパターンの文字列を描画するには、以下のコードを実行します。


import java.awt.*;
import magick.*;

public class JMagickTest46
{
public static void main(String args[])
throws MagickException
{
/* タイルパターンの文字列を描画する */
ImageInfo ii = new ImageInfo("xc:#fad759");
ii.setSize("300x80");
DrawInfo di = new DrawInfo(ii);
/* フォント指定(パスは環境によって変えてね) */
// di.setFont("c:\\winnt\\fonts\\msgothic.ttc");
di.setFont("Tahoma");
/* ポイントサイズ指定 */
di.setPointsize(50);
/* パターン設定指定 */
MagickImage tile = new MagickImage(
new ImageInfo("pattern1.gif")
);
di.setTile(tile);
/* Gravity設定 */
di.setGravity(GravityType.NorthWestGravity);
/* 位置指定 */
di.setGeometry("+5+0");
/* テキスト設定 */
di.setText("ImageMagick");
MagickImage mi = new MagickImage(ii);
mi.annotateImage(di);
mi.setFileName("sample747a.jpg");
/* jpegのqualityを90に設定して保存 */
ImageInfo oii = new ImageInfo();
oii.setQuality(90);
mi.writeImage(oii);
}
}


パターン画像(pattern1.gif)


出力画像(sample747a.jpg)


関連情報
JMagickまとめ

groovyで魚型を描画する

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


import groovy.swing.j2d.*

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


出力画像(sample795a.png)
groovyで描画した魚型

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

Sunday, January 11, 2009

ImageMagickで横方向に擦れたような半透明画像に変換する

ImageMagickで横方向に擦れたような半透明画像に変換するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 200x200 xc:none -fill white -draw "roundrectangle 20,20,180,180,10,10" -matte -channel rgba -fx "(j%%4<3&&r!=0)?p*0.7:p*0.3" -spread 5 -motion-blur 0x10+0 -motion-blur 0x10+180 -matte -channel rgba sf.jpg -compose src_in -composite sample750a.png

元画像(sf.jpg)


出力画像(sample750a.png)


関連項目
ImageMagickで不規則な筋状の画像を生成する
ImageMagickで、文字列にモーションブラーをかける

groovyで画像をさまざまなパターンで塗りつぶす

groovyで画像をさまざまなパターンで塗りつぶすには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample859a.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 {
smear(shape:smearLines,
density:0.8, distance:8, angle:10)
}
}

}
gr.renderToFile("sample859b.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 {
smear(shape:smearCrosses,
density:0.8, distance:8, angle:10)
}
}

}
gr.renderToFile("sample859c.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 {
smear(shape:smearCircles,
density:0.8, distance:8, angle:10)
}
}

}
gr.renderToFile("sample859d.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 {
smear(shape:smearSquares,
density:0.8, distance:8, angle:10)
}
}

}


元画像(sf.jpg)


出力画像1(sample859a.png):指定の角度の線で塗りつぶし


出力画像2(sample859b.png):十字で


出力画像3(sample859c.png):円で塗りつぶし


出力画像4(sample859d.png):四角で塗りつぶし


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

関連項目
groovyで画像にスタンプフィルタをかける
groovyで画像を感光させたように加工する
groovyで画像を2値化する

Saturday, January 10, 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>sample736(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像の左右をぎざぎざに切り取る */
$im = new Imagick("sf.jpg");

/* 左右がぎざぎざになったマスクを作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), 10, "none");
$im2->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->pushPattern('mask', 0, 0, $im->getImageWidth(), 10);
$idraw->setFillColor('white');
$points[] = array('x' => 0, 'y' => 0);
$points[] = array('x' => 5, 'y' => 5);
$points[] = array('x' => 1, 'y' => 9);
$points[] = array('x' => $im->getImageWidth()-1, 'y' => 9);
$points[] = array('x' => $im->getImageWidth()-1-5, 'y' => 5);
$points[] = array('x' => $im->getImageWidth()-1, 'y' => 0);
$idraw->polygon($points);
$idraw->popPattern();
$idraw->setFillPatternUrl('#mask');
$idraw->rectangle(0, 0, $im->getImageWidth(), $im->getImageHeight());

$im3 = new Imagick();
$im3->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$im3->setImageMatte(true);
$im3->drawImage($idraw);

/* マスクで画像を切り取り */
$im3->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

$im3->writeImage('sample736a.png');

$idraw->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample736a.png" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample736a.png)

groovyで楕円を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample794a.png", 200, 200){
antialias("on")
ellipse( cx:100, cy:100, radiusx:80, radiusy:40,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample794a.png)
groovyで描画した楕円

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

関連項目
groovyで円を描画する
groovyでドーナツ型を描画する

Friday, January 09, 2009

RMagickでjpegのqualityを指定してファイルに保存する

RMagickでjpegのqualityを指定してファイルに保存するには、以下のコードを実行します。

require 'RMagick'
include Magick

# jpeg qualityの指定
img = Image.read("sf.jpg")
img[0].write("sample723a.jpg"){
self.quality=10
}

exit

元画像(sf.jpg)


出力画像(sample723a.jpg)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

groovyで画像をスムースにする

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


import groovy.swing.j2d.*

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


元画像(sf.jpg)


出力画像(sample858a.png)


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

関連項目
groovyで画像に水面の波紋のような効果をかける

Thursday, January 08, 2009

groovyでドーナツ型を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample793a.png", 200, 200){
antialias("on")
donut( cx:100, cy:100, ir:50, or:90,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}
cx, cyで中心座標、irで内側の半径、orで外側の半径を指定します。

出力画像(sample793a.png)
groovyで描画したドーナツ型

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

関連項目
groovyで円を描画する
groovyで吹き出し画像を描画する
SVGRendererでドーナツ型を描画する (SVGRendererでの同様の処理)

librsvgを使用して画像を半透明にして重ね合わせる

librsvgを使用して画像を半透明にして重ね合わせるには、以下のsvgファイルを処理します。


<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="200" height="200">
<image x="0" y="0" width="200" height="200"
xlink:href="sf.jpg" >
<title>sf.jpg</title>
</image>
<image x="10" y="10" width="100" height="100"
xlink:href="sample3b.jpg" opacity="0.5">
<title>sample3b.jpg</title>
</image>
</svg>


コマンド
rsvg-convert image-opacity.svg -f png -o sample746a.png

元画像1(sf.jpg)


元画像2(sample3b.jpg)


出力画像(sample746a.png)


○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。

Wednesday, January 07, 2009

groovyで画像を感光させたように加工する

groovyで画像を感光させたように加工するには、以下のコードを実行します。


import groovy.swing.j2d.*

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


元画像(sf.jpg)


出力画像(sample857a.png)
groovyで感光させたように加工した画像

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

関連項目
groovyで画像を2値化する
groovyで画像をシャープにする

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>sample735(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 円形のドット文字列を描画する */
/* 円形ドットのパターンを作成する */
$im = new Imagick();
$im->newImage(10, 10, "none");
$im->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->pushPattern('ellipse', 0, 0, 10, 10);
$idraw->setFillColor('white');
$idraw->ellipse(5, 5, 4, 4, 0,360);
$idraw->popPattern();
$idraw->setFillPatternUrl('#ellipse');
$idraw->rectangle(0, 0, 450, 120);

$im2 = new Imagick();
$im2->newImage(450, 120, "none");
$im2->drawImage($idraw);

/* 文字列を描画 */
$im3 = new Imagick();
$im3->newImage(45, 12, 'none');
$idraw2 = new ImagickDraw();
$idraw2->setFillColor('#bbddff');
/* フォント設定 */
$idraw2->setFont('Bitstream-Vera-Sans');
/* フォントサイズ設定 */
$idraw2->setFontSize(9);
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_NORTH);
/* antialiasをoff*/
$idraw2->setStrokeAntialias(false);
/* 文字列描画 */
$idraw2->annotation(0, 0, "Sample");
$im3->drawImage($idraw2);

/* FILTER_POINTを使用してリサイズ */
$im3->resizeImage(450, 120, Imagick::FILTER_POINT, 1, false);

/* 円形ドットで文字列を切り取り */
$im2->compositeImage($im3, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);


$im2->writeImage('sample735a.png');

$idraw2->destroy();
$idraw->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample735a.png" />

</body>
</html>

出力画像(sample735a.png)


関連項目
ImageMagickとPHPで画像の上に半透明の荒いドットの文字列を描画する
ImageMagickとPHPで半透明の吹き出しを描画する
ImageMagickとPHPで青白く輝く文字列を描画する

Tuesday, January 06, 2009

RMagickで画像の色数を減色する

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

require 'RMagick'
include Magick

# 32色に減色
img = Image.read("sf.jpg")
img2 = img[0].quantize(32);

img2.write("sample722a.png")

exit

元画像(sf.jpg)


出力画像(sample722a.png)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

関連項目
ImageMagickで画像を減色する (convertコマンドでの同様の処理)
ImageMagickで画像を4色グレースケールの画像に減色する

groovyでイルカの形を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample792a.png", 200, 200){
antialias("on")
dolphinShape( x:0, y:20, width:200, height:160,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample792a.png)
groovyで描画したイルカの画像

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

関連項目
groovyで十字形を描画する
groovyで円を描画する
groovyで蝶を描画する

Monday, January 05, 2009

groovyで画像にスタンプフィルタをかける

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample856a.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 {
stamp(radius:4, softness:0.5, threshold: 0.5,
white: color("#f0f0ff"), black: color("#4477aa") )
}
}
}


元画像(sf.jpg)


出力画像(sample856a.png)
groovyでスタンプフィルタをかけた画像

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

関連項目
groovyで画像を2値化する
groovyで画像に水面の波紋のような効果をかける
groovyで画像に放射ブラーをかける

Java2Dで点線角丸四角を描画する

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


import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;

public class Java2DTest21
{
public static void main(String args[])
throws Exception
{
/* 点線角丸四角の画像を生成 */
BufferedImage img = new BufferedImage(
100, 100, BufferedImage.TYPE_INT_BGR
);
Graphics2D gr = img.createGraphics();
/* 背景を白で塗りつぶし */
gr.setColor(Color.WHITE);
gr.fillRect(0, 0, 100, 100);

/* レンダリングヒントを設定 */
RenderingHints rh = new
RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);

rh.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);

gr.setRenderingHints(rh);


/* 描画色 */
gr.setColor(new Color(0xbb, 0xdd, 0xff));
/* 線のスタイルを設定 */
float dashPattern[] = {4.0f};
BasicStroke bs = new BasicStroke(2.0f,
BasicStroke.CAP_ROUND,
BasicStroke.JOIN_ROUND, 2.0f,
dashPattern, 0.0f);
gr.setStroke(bs);

/* 点線角丸四角を描画 */
RoundRectangle2D rr = new RoundRectangle2D.Double(
0.0, 0.0, 99.0, 99.0, 40.0, 40.0);
gr.draw(rr);
gr.dispose();
ImageIO.write(img, "jpg", new File("sample745a.jpg"));
}
}


出力画像(sample745a.jpg)

Sunday, January 04, 2009

groovyで画像を2値化する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample855a.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 {
threshold(lowerThreshold: 128,
upperThreshold: 127,
white: color("orange"),
black: color("white"))
}
}
}


元画像(sf.jpg)


出力画像(sample855a.png)
groovyで2値化した画像

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

関連項目
groovyで画像に放射ブラーをかける
groovyで画像に水面の波紋のような効果をかける
groovyで画像をシャープにする

groovyでCubicCurveを描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample791a.png", 200, 200){
antialias("on")
cubicCurve( x1: 40, y1:200, ctrlx1:0, ctrly1:50,
ctrlx2:200, ctrly2: 0, x2:160, y2:200,
borderColor: color("#aaccff"),
borderWidth: 3
)
}


出力画像(sample791a.png)


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

関連項目
groovyで円弧を描画する
SVGRendererでCubicCurveを描画する (SVGRendererによる同様の処理)

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>sample734(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 手でちぎったように画像を切り取る */
$im = new Imagick('sf.jpg');

$px = 5;
$py = 5;
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$im2->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->setFillColor('white');
$idraw->rectangle($px, $py, $im->getImageWidth()-$px, $im->getImageHeight()-$py);
$im2->drawImage($idraw);
$im2->spreadImage(6);
$im2->medianFilterImage(3);
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

$im2->writeImage('sample734a.png');

$idraw->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample734a.png" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample734a.png)


関連項目
ImageMagickで手で切り取ったように不規則に画像を切り取る (convertコマンドでの同様の処理)

Saturday, January 03, 2009

groovyで画像をシャープにする

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample854a.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 {
unsharp(radius:3)
}
}
}


元画像(sf.jpg)


出力画像(sample854a.png)
groovyでシャープにした画像

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

関連項目
groovyで画像をシャープにする - その2
groovyで画像に放射ブラーをかける
groovyで画像に水面の波紋のような効果をかける
groovyで画像に編み目模様をつける

groovyで十字形を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample790a.png", 200, 200){
antialias("on")
cross( cx: 100, cy: 100, width:20, radius:50,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample790a.png)
groovyで描画した十字形

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

関連項目
groovyで蝶を描画する
groovyで吹き出し画像を描画する
groovyでイルカの形を描画する

RMagickでビルトインパターンの背景画像を作成する

RMagickでビルトインパターンの背景画像を作成するには、以下のコードを実行します。

require 'RMagick'
include Magick

img = Image.read("pattern:RIGHTSHINGLE"){
self.size = "150x150"
}

img[0].write("sample721a.png")

exit

出力画像(sample721a.png)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

Friday, January 02, 2009

groovyで画像に水面の波紋のような効果をかける

groovyで画像に水面の波紋のような効果をかけるには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample853a.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 {
water(cx:0.6, cy:0.6, radius:100, wavelength:20, amplitude:4)
}
}
}


元画像(sf.jpg)


出力画像(sample853a.png)
groovyで水面の波紋のような効果をかけた画像

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

関連項目
Java2DとJava Image Filters(pixels)を使用して水面の波紋のような効果を処理する (Javaでの同様の処理)
groovyで画像に放射ブラーをかける
groovyで画像に編み目模様をつける

groovyで円を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample789a.png", 200, 200){
antialias("on")
circle( cx: 100, cy: 100, radius:80,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample789a.png)


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

Java2Dで画像をセピア調に変換する

Java2Dで画像をセピア調に変換するには、以下のコードを実行します。


import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;

public class Java2DTest20
{
public static void main(String args[])
throws Exception
{
/* 画像をセピア調に変換する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
WritableRaster wr = img.getRaster();
int buf[] = new int[wr.getNumDataElements()];

for(int ly=0;ly<wr.getHeight();ly++){
for(int lx=0;lx<wr.getWidth();lx++){
wr.getPixel(lx, ly, buf);

int maxval = Math.max(Math.max(buf[0], buf[1]), buf[2]);
int minval = Math.min(Math.min(buf[0], buf[1]), buf[2]);
int val = (maxval+minval)/2;
buf[0] = val * 0xd0/0xff;
buf[1] = val * 0xa0/0xff;
buf[2] = val * 0x50/0xff;

wr.setPixel(lx, ly, buf);
}
}
ImageIO.write(img, "jpg", new File("sample744a.jpg"));
}
}


元画像(sf.jpg)


出力画像(sample744a.jpg)

Thursday, January 01, 2009

groovyで画像に編み目模様をつける

groovyで画像に編み目模様をつけるには、以下のコードを実行します。

import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample852a.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 {
weave(xWidth:12, yWidth:12, xGap:4, yGap:4)
}
}
}


出力画像(sample852a.png)


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

関連項目
groovyで画像を2値化する
groovyで画像をシャープにする
groovyで画像に水面の波紋のような効果をかける
groovyで画像に編み目模様をつける
groovyで画像に放射ブラーをかける

groovyで蝶を描画する

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


import groovy.swing.j2d.*

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


出力画像(sample788a.png)
groovyで描画した蝶

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

関連項目
groovyでイルカの形を描画する
SVGRendererで蝶を描画する (SVGRendererによるSVG出力)

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>sample733(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 半透明の吹き出しを描画する */
$im = new Imagick('sf.jpg');

$idraw = new ImagickDraw();
/* 塗りつぶし色設定 */
$idraw->setFillColor('#00000050');
$idraw->roundrectangle(40,50, 160,80, 10,10);
$points[] = array('x' => 100, 'y' => 81);
$points[] = array('x' => 100, 'y' => 91);
$points[] = array('x' => 110, 'y' => 81);
$idraw->polygon($points);
$im->drawImage($idraw);
/* フォント設定 */
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(15);
/* 塗りつぶし色設定 */
$idraw->setFillColor('#ffffffd0');
$im->annotateImage($idraw, 55, 70, 0, "San Francisco");

$im->writeImage('sample733a.png');

$idraw->clear();
$idraw->destroy();
$im->clear();
$im->destroy();
?>
<img src="sample733a.png" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample733a.png)