Saturday, May 23, 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 Im4java18
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.addImage("sf.jpg");
op.median(3.0);
op.addImage("sample1084a.png");
convert.run(op);
}
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");
*/
}
}

}


元画像(sf.jpg)


出力画像(sample1084a.png)
im4javaでメディアンフィルタをかけた画像

関連情報
im4javaのまとめ

ImageMagickでメディアンフィルタを適用する (convertコマンドでの同様の処理)

SVGRendererでイルカを描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample967a.svg", 200, 200){
dolphinShape( x:0, y:20, width:200, height:160,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample967a.svg)をPNGにレンダリングした画像
SVGRendererで描画したイルカ

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyでイルカの形を描画する (GraphicsRendererでの同様の処理)

Friday, May 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>sample1096(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 枠の幅 */
$padx = 10;
$pady = 10;
$im = new Imagick("sf.jpg");
/* ストライプを作成 */
$idraw = new ImagickDraw();
$idraw->pushPattern('tile', 0, 0, 20, 20);
$idraw->setFillColor("white");
$idraw->rectangle(0,0,19,9);
$idraw->setFillColor("#99aaff");
$idraw->rectangle(0,10,19,19);
$idraw->popPattern();

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

/* ストライプを回転 */
$im2->setImageVirtualPixelMethod(
Imagick::VIRTUALPIXELMETHOD_TILE);
$points = array(60);
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE,
// $points, false);
// ScaleRotateTranslateDistortion in distort.h
$im2->distortImage(3, $points, false);

$im2->compositeImage($im, Imagick::COMPOSITE_OVER,
$padx, $pady,
Imagick::CHANNEL_ALL);

$im2->writeImage('sample1096a.png');
$idraw->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample1096a.png" />
</body>
</html>


元画像(sf.jpg)


出力画像(sample1096a.png)
Imagickでストライプ枠をつけた画像

関連項目
ImageMagickとPHPで画像に3D枠をつける
ImageMagickとPHPで立体的な角丸四角の枠をつける
ImageMagickとPHPで画像に半透明ガラスの枠をつける
ImageMagickとPHPで、画像に半透明角丸四角の枠をつける
ImageMagickとPHPで、画像に枠をつける (シンプルな単色枠)
ImageMagickで画像にストライプ枠をつける (convertコマンドによる同様の処理)

SVGRendererでCubicCurveを描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample966a.svg", 200, 200){
cubicCurve( x1: 40, y1:200, ctrlx1:0, ctrly1:50,
ctrlx2:200, ctrly2: 0, x2:160, y2:200,
borderColor: color("#aaccff"),
borderWidth: 3
)
}


出力SVG(sample966a.svg)をPNGにレンダリングした画像
SVGRendererで描画したキュービックカーブ

動作環境
Groovy1.6.0, JDK1.6 Update12

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

Thursday, May 21, 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>sample1095(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick();
$im->newImage(300, 50, 'none');
$im->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->setFillColor('#ffffff');
/* フォント設定 */
$idraw->setFont('Arial');
/* フォントサイズ設定 */
$idraw->setFontSize(43);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_NORTH);
/* antialiasをoff*/
$idraw->setStrokeAntialias(false);
/* 文字列描画 */
$idraw->annotation(0, 0, "ImageMagick");
$im->drawImage($idraw);

$im2 = new Imagick();
$im2->newPseudoImage(1, 6, 'gradient:#3070A0FF-#FFFF10FF');
$im2->resizeImage(300,50,Imagick::FILTER_POINT,1);
$im->compositeImage($im2, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);

$im->writeImage('sample1095a.png');
$im2->destroy();
$idraw->destroy();
$im->destroy();
?>
<img src="sample1095a.png" />
</body>
</html>


出力画像(sample1095a.png)
Imagickでバンド状グラデーションで描画した文字列

関連項目
ImageMagickとPHPで、円形のドットの文字列を描画する
ImageMagickとPHPで、文字列の影に横線を入れる
ImageMagickとPHPで画像上に描画した文字列以外の部分をグレースケールにする
ImageMagickとPHPで青白く輝く文字列を描画する
ImageMagickとPHPでドット文字列を描画する

SVGRendererでクロスを描画する

SVGRendererでクロスを描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample965a.svg", 200, 200){
cross( cx: 100, cy: 100, width:20, radius:50,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample965a.svg)をPNGにレンダリングした画像


動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで十字形を描画する (GraphicsRendererでの同様の処理)

Wednesday, May 20, 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 Im4java17
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.addImage("sf.jpg");
op.charcoal(2);
op.addImage("sample1083a.png");
convert.run(op);
}
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");
*/
}
}

}


元画像(sf.jpg)


出力画像(sample1083a.png)
im4javaで木炭画調に変換した画像

関連情報
im4javaのまとめ

SVGRendererで蝶を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample964a.svg", 200, 200){
butterflyShape( x: 0, y: 0, width: 200, height: 200,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample964a.svg)をPNGにレンダリングした画像
SVGRendererで描画した蝶

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
SVGRendererでグラデーションのかかった星を描画する (図形をグラデーションで塗りつぶす方法)
groovyで蝶を描画する (GraphicsRendererによる蝶の描画)

Tuesday, May 19, 2009

RMagickでぼやけた円をランダムに描画する

RMagickでぼやけた円をランダムに描画するには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
10.times {
images2 = ImageList.new
images2.new_image(images.columns, images.rows){
self.background_color = "none"
}
images2.alpha = ActivateAlphaChannel
dr = Draw.new
cx = rand() * images.columns
cy = rand() * images.columns
rv = rand()
dr.fill = "#ffffff80"
rad = 40*rv
dr.ellipse(cx, cy,rad, rad, 0, 360)
dr.draw(images2);
images[0] = images.composite(
images2.blur_channel(0,7*rv,AllChannels),
CenterGravity, 0, 0,
OverCompositeOp)
}
images.write("sample1089a.png")

exit


元画像(sf.jpg)


出力画像(sample1089a.png)
RMagickでランダムに描画した円

動作環境
ruby1.8.6, rmagick2.9.0

SVGRendererで吹き出しを描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample963a.svg", 200, 200){
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
)
}


出力SVG(sample963a.svg)をPNGにレンダリングした画像
SVGRendererで描画した吹き出し

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
SVGRendererでグラデーションのかかった星を描画する (図形をグラデーションで塗りつぶす方法)
groovyで吹き出し画像を描画する (GraphicsRendererによる同様の処理)

Monday, May 18, 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>sample1094(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick();
$im->newPseudoImage(200, 200, "gradient:#bbddffff-#ffffffff");
$im->setImageMatte(true);
$points = array(45);
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE, $points, false);
// ScaleRotateTranslateDistortion in distort.h
$im->distortImage(3, $points, false);
$im->writeImage('sample1094a.png');
$im->destroy();
?>
<img src="sample1094a.png" />
</body>
</html>

出力画像(sample1094a.png)
Imagickで描画した回転させたグラデーション

SVGRendererで矢印を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample962a.svg", 200, 200){
font(new java.awt.Font('MS 明朝', java.awt.Font.BOLD, 60))
arrow( x: 10, y: 10, width: 150, height: 100,
angle:45,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample962a.svg)をPNGにレンダリングした画像
SVGRendererで描画した矢印

動作環境
Groovy1.6.0, JDK1.6 Update12

Sunday, May 17, 2009

RMagickで画像を縮小・タイル配置して回転させる

RMagickで画像を縮小・タイル配置して回転させるには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new("sf2.jpg")
images.virtual_pixel_method = TileVirtualPixelMethod
images.distort(ScaleRotateTranslateDistortion,
[0.25, 10]).write("sample1088a.png")

exit


上記では画像サイズを1/4(=0.25)に縮小して、10度傾けています。

元画像(sf2.jpg)


出力画像(sample1088a.png)
RMagickで画像を縮小・タイル配置して回転させた画像

動作環境
ruby1.8.6, rmagick2.9.0

関連項目
RMagickで画像を台形変形させる (distortメソッドを使用して台形変形)
ImageMagickで画像を縮小してタイル配置にして回転させる (convertコマンドによる同様の処理)

SVGRendererで日本語を描画する

SVGRendererで日本語を描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample961a.svg", 200, 200){
font(new java.awt.Font('MS 明朝', java.awt.Font.BOLD, 60))
text( x:0, y:70,
text: "日本語",
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 1
)
}


出力SVG(sample961a.svg)をPNGにレンダリングした画像
SVGRendererで描画した日本語

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで日本語を描画する (GraphicsRendererによる日本語描画)
SVGRendererで円を描画する
SVGRendererで四角を描画する