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)

Wednesday, December 31, 2008

groovyで画像に放射ブラーをかける

groovyで画像に放射ブラーをかけるには、以下のコードを実行します。

import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample851a.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 {
motionBlur(angle:0, distance:1.0,
rotation:0, zoom:0.1, wrapEdges:false)
}
}
}


元画像(sf.jpg)


出力画像(sample851a.png)


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

関連項目
Java2DとJava Image Filters(pixels)を使用して放射ブラーをかける

groovyで吹き出し画像を描画する

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

import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample787a.png", 200, 200){
antialias("on")
balloon( x: 80, y: 20, width: 100, height: 100,
fill: color("#bbddff"),
tabLocation: "left",
tabDisplacement: 0.8,
tabHeight: 10,
tabWidth: 10,
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample787a.png)
groovyで描画した吹き出し画像

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

関連項目
SVGRendererで吹き出しを描画する (SVGRendererで描画した吹き出し)

RMagickでプラズマフラクタル画像を生成する

RMagickでプラズマフラクタル画像を生成するには、以下のコードを実行します。

require 'RMagick'
include Magick

img = Image.read("plasma:fractal"){
self.size = "150x150"
}

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

exit

出力画像(sample720a.png)


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

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

Tuesday, December 30, 2008

JMagickで画像の端がかすれたような処理をする

JMagickで画像の端がかすれたような処理をするには、以下のコードを実行します。


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

public class JMagickTest45
{
public static void main(String args[])
throws MagickException
{
/* 画像の端をかすれたように処理する */
MagickImage mi = new MagickImage(new ImageInfo("sf2.jpg"));
int w = (int)mi.getDimension().getWidth();
int h = (int)mi.getDimension().getHeight();
// マスク作成
ImageInfo ii = new ImageInfo("xc:none");
ii.setSize(w + "x" + h);
MagickImage mi2 = new MagickImage(ii);
DrawInfo di = new DrawInfo(ii);
di.setFill(new PixelPacket(0xff*256, 0xff*256, 0xff*256, 0));
di.setPrimitive("rectangle 10, 10, 289, 214");
mi2.drawImage(di);
mi2 = mi2.spreadImage(3);
// 切り取り
mi2.compositeImage(CompositeOperator.SrcInCompositeOp,mi,0,0);
// 白背景作成
ImageInfo ii2 = new ImageInfo("xc:white");
ii2.setSize(w + "x" + h);
MagickImage mi3 = new MagickImage(ii2);
mi3.compositeImage(CompositeOperator.OverCompositeOp,mi2,0,0);

mi3.setFileName("sample726a.jpg");
mi3.writeImage(new ImageInfo());
}
}


元画像(sf2.jpg)


出力画像(sample726a.jpg)


関連情報
JMagickまとめ
ImageMagickで、画像の端をかすれたように処理する
ImageMagickでクレヨン風の文字列を描画する

groovyで矢印を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample786a.png", 200, 200){
antialias("on")
arrow( x: 100, y: 100, width: 100, height: 50,
angle:45,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力画像(sample786a.png)


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

Monday, December 29, 2008

RMagickで、画像を中心から上下へ徐々に大きく揺らす

RMagickで、画像を中心から上下へ徐々に大きく揺らすには、以下のコードを実行します。

require 'RMagick'
include Magick

images1 = ImageList.new("sf2.jpg")
img = images1.fx("j>h/2?p[cos(pi*j/15)*(j-h/2)*0.1,0]:p[cos(pi*(j-h/2)/15)*(h/2-j)*0.1,0]", Magick::AllChannels)

img.write("sample719a.png")

exit

元画像(sf2.jpg)


出力画像(sample719a.png)


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

関連項目
ImageMagickで、画像を中心から上下へ徐々に大きく揺らす (convertコマンドでの同様の処理)
RMagickで画像を揺らす

groovyで円弧を描画する

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


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample785.png", 200, 200){
antialias("on")
arc( x: 0, y: 0, width: 198, height: 198,
start:0, extent:45,
borderColor: color("#cc0000"),
borderWidth: 2,
fill: color(red: 0xff, green: 0xcc, blue: 0x66),
close: "pie"
)
}


出力画像(sample785.png)


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

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

Sunday, December 28, 2008

librsvgを使用して文字ごとに書式を設定する

librsvgを使用して文字ごとに書式を設定するには、以下のsvgファイルを処理します。

pop.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="70">
<!-- 文字ごとに書式を変更 -->
<text x="10" y="46" font-family="Tahoma"
fill="#a09090" stroke="#a09090" stroke-width="1">
<tspan font-size="52">S</tspan><tspan font-size="30">ample</tspan>
</text>
</svg>


コマンド
rsvg-convert pop.svg -f png -o sample732a.png


出力画像(sample732a.png)

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

Saturday, December 27, 2008

JMagickで手塗り風の四角を描画する

JMagickで手塗り風の四角を描画するには、以下のコードを実行します。


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

public class JMagickTest44
{
public static void main(String args[])
throws MagickException
{
/* 手塗り風の四角を描画する */
ImageInfo ii = new ImageInfo("xc:white");
ii.setSize("200x200");

DrawInfo di = new DrawInfo(ii);
di.setFill(new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0));
di.setPrimitive("rectangle 10, 10, 189, 189");
MagickImage mi = new MagickImage(ii);
mi.drawImage(di);
mi = mi.spreadImage(3);
mi = mi.medianFilterImage(5);
mi.setFileName("sample725a.jpg");
mi.writeImage(new ImageInfo());
}
}


出力画像(sample725a.jpg)


環境
JDK6 Upadate6(JDK1.6.0_06)/jmagick-win-6.3.9-Q16

関連情報
JMagickまとめ

Friday, December 26, 2008

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

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

require 'RMagick'
include Magick

images1 = ImageList.new("sf.jpg")
images1.alpha = ActivateAlphaChannel
img2 = Image.new(images1.columns, images1.rows){
self.background_color = "none"
}

idr = Draw.new
idr.fill = "white"
idr.ellipse(images1.columns/2,images1.rows/2,
images1.columns/2,images1.rows/2,0,360)
idr.draw(img2);

img3 = images1.composite(img2, 0, 0, DstInCompositeOp);
img3.write("sample718a.png")

exit

元画像(sf.jpg)


出力画像(sample718a.png)


関連項目
RMagickで画像の指定した点から円形のバンド状に明るさを変える

Thursday, December 25, 2008

librsvgを使用して虹色の文字列を描画する

librsvgで虹色の文字列を描画するには、以下のsvgファイルを処理します。

rainbow.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="60">

<defs>
<linearGradient id="rainbowg" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="blue"/>
<stop offset="25%" stop-color="green"/>
<stop offset="50%" stop-color="yellow"/>
<stop offset="75%" stop-color="orange"/>
<stop offset="100%" stop-color="red"/>
</linearGradient>
</defs>

<text x="10" y="46" font-family="Arial" font-size="46"
fill="url(#rainbowg)">Rainbow
</text>
</svg>


コマンド
rsvg-convert rainbow.svg -f png -o sample731a.png

出力画像(sample731a.png)


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

Wednesday, December 24, 2008

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

ImageMagickで不規則な筋状の画像を生成するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.4-Q16
%im%\convert.exe -size 200x200 plasma:fractal -fx "intensity" -normalize ( -size 1x1 xc:#3070A0FF xc:#ffffffff -append ) -fx "v.p{0,p}" -spread 2 -motion-blur 0x150+270 sample730a.png

※パターンを固定したい場合は、-seedオプションでシード値を指定します。

出力画像(sample730a.png)


関連項目
RMagickで不規則な筋状の画像を生成する
ImageMagickとPHPで不規則な筋状の画像を生成する (Imagickによる同様の処理)

Tuesday, December 23, 2008

RMagickで手塗り風の四角を描画する

RMagickで手塗り風の四角を描画するには、以下のコードを実行します。

require 'RMagick'
include Magick

sx = 200
sy = 200
px = 10
py = 10
# 白地画像作成
img = Image.new(sx, sy){
self.background_color = "white"
}
# 四角を描画
idr = Draw.new
idr.fill = "#bbddff"
idr.rectangle(px, py, sx-px, sy-py)
idr.draw(img);
# 拡散
img2 = img.spread(5);
# メディアンフィルタ
img3 = img2.median_filter(3)
img3.write("sample717a.png")

exit

出力画像(sample717a.png)


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

関連項目
ImageMagickで、手塗り風の四角を描画する (Convertコマンドでの同様の処理)
ImageMagickで手で切り取ったように不規則に画像を切り取る

Monday, December 22, 2008

ImageMagickで画像を3色のモノトーンにした画像に変換する

ImageMagickで画像を3色のモノトーンにした画像に変換するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 300x225 xc:none -fill white -draw "roundrectangle 0,0,94,224,10,10" -matte -channel rgba ( sf2.jpg -colorspace gray -fill #c06030 -colorize 30% ) -compose src_in -composite sample729a.png

%im%\convert.exe -size 300x225 xc:none -fill white -draw "roundrectangle 100,0,194,224,10,10" -matte -channel rgba ( sf2.jpg -colorspace gray -fill #50b030 -colorize 30% ) -compose src_in -composite sample729b.png

%im%\convert.exe -size 300x225 xc:none -fill white -draw "roundrectangle 200,0,294,224,10,10" -matte -channel rgba ( sf2.jpg -colorspace gray -fill #3040c0 -colorize 30% ) -compose src_in -composite sample729c.png

%im%\convert.exe sample729a.png sample729b.png sample729c.png -flatten sample729d.png

元画像(sf2.jpg)


出力画像(sample729d.png)