Saturday, May 16, 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 Im4java16
{
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.wave(5.0, 50.0);
op.addImage("sample1082a.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)


出力画像(sample1082a.png)
im4javaで波型に揺らした画像

関連情報
im4javaのまとめ

SVGRendererでポリラインを描画する

SVGRendererでポリラインを描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample960a.svg", 200, 200){
polyline( points: [198,0, 0,100, 198,198],
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample960a.svg)をPNGにレンダリングした画像
SVGRendererでポリラインを描画した画像

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

関連項目
SVGRendererで直線を描画する
SVGRendererでポリゴンを描画する
groovyでポリラインを描画する (GraphicsRendererでの同様の処理)

Friday, May 15, 2009

ImageMagickで画像をタイル画像に変換する

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

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

%im%\convert.exe -size 6x6 xc:gray50 -frame 2x2+2+0 sample1092a.png

%im%\convert.exe sf.jpg -resize 20x20 -filter point -resize 200x200 -size 200x200 tile:sample1092a.png -compose overlay -composite sample1092b.png

元画像(sf.jpg)


出力画像(sample1092b.png)


関連項目
ImageMagickで画像を角丸四角タイルパターンで切り取る
ImageMagickで画像から立体的なタイル画像に変換する
ImageMagickでドット絵風の文字を描画する-その2

SVGRendererでポリゴンを描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample959a.svg", 200, 200){
polygon( points: [100,0, 0,198, 198,198],
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


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


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

関連項目
SVGRendererで直線を描画する
SVGRendererで円を描画する
SVGRendererで四角を描画する
SVGRendererで楕円を描画する
SVGRendererでグラデーションのかかった星を描画する (図形をグラデーションで塗りつぶす方法)

Thursday, May 14, 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>sample1091(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick("sf.jpg");
$iw = $im->getImageWidth();
$ih = $im->getImageHeight();

$im2 = new Imagick();
$im2->newPseudoImage($iw, $ih, "xc:none");

$idraw = new ImagickDraw();
$idraw->setFillColor("white");
$idraw->ellipse(100,80,50,30,0,360);
$polygon[] = array('x' => 80, 'y' => 100);
$polygon[] = array('x' => 90, 'y' => 120);
$polygon[] = array('x' => 90, 'y' => 100);
$idraw->polygon($polygon);
$im2->drawImage($idraw);
$im2->shadeImage(true, 135, 23);
$im2->blurImage(0, 2, Imagick::CHANNEL_RED +
Imagick::CHANNEL_GREEN +
Imagick::CHANNEL_BLUE);
$im2->normalizeImage(Imagick::CHANNEL_RED +
Imagick::CHANNEL_GREEN +
Imagick::CHANNEL_BLUE);
$im2->setImageMatte(true);

$idraw2 = new ImagickDraw();
$idraw2->setFillColor("white");
/* フォント設定 */
$idraw2->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw2->setFontSize(14);
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_NORTHWEST);
/* 文字列描画 */
$idraw2->annotation(60, 75, "San Francisco");
$im->drawImage($idraw2);

$im->compositeImage($im2, Imagick::COMPOSITE_OVERLAY,
0, 0, Imagick::CHANNEL_ALL);

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

</body>
</html>


元画像(sf.jpg)


出力画像(sample1091a.png)
Imagickで立体的な吹き出しを描画した画像

関連項目
ImageMagickで立体的な吹き出しを描画する

RMagickで画像をゴースト画像っぽく変換する

RMagickで画像をゴースト画像っぽく変換するには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new("sf2.jpg")
images.colorspace = GRAYColorspace
images[0] = images.edge(1).blur_image(0,1).spread(1).
motion_blur(0, 10, 260)
images.colorize(0.5, 0.5, 0.5, "#204070").
write("sample1087a.png")

exit


元画像(sf2.jpg)


出力画像(sample1087a.png)
RMagickでゴースト画像っぽく変換した画像

動作環境
ruby1.8.6, rmagick2.9.0

関連項目
ImageMagickで画像をゴーストっぽく変換する (convertコマンドでの似た処理)

SVGRendererで角丸四角を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample958a.svg", 200, 200){
rect( x:10, y:10, width:180, height:180,
arcWidth: 20, arcHeight:20,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample958a.svg)をPNGにレンダリングした画像
SVGRendererで描画した角丸四角

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

関連項目
・その他の描画
SVGRendererで直線を描画する
SVGRendererで円を描画する
SVGRendererで四角を描画する
SVGRendererで楕円を描画する

・グラデーションで塗りつぶす
SVGRendererでグラデーションのかかった星を描画する

groovyで角丸四角を描画する (GraphicsRendererによる角丸四角描画)

Wednesday, May 13, 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 Im4java15
{
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.virtualPixel("tile");
op.distort("SRT", "0.25 45");
op.addImage("sample1081a.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");
*/
}
}

}


元画像(sf2.jpg)


出力画像(sample1081a.png)
im4javaで縮小・タイル配置・回転させた画像

関連情報
im4javaのまとめ

ImageMagickで画像を縮小してタイル配置にして回転させる (convertコマンドによる同様の処理)

SVGRendererで楕円を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample957a.svg", 200, 200){
ellipse( cx:100, cy:100, radiusx:80, radiusy:40,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


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

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

関連項目
SVGRendererで円を描画する
SVGRendererでドーナツ型を描画する
groovyで楕円を描画する (GraphicsRendererによる楕円描画)

Tuesday, May 12, 2009

ScriptomとImageMagickで画像を油絵調に変換する

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

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("sf.jpg", "-paint", "3", "sample1079a.png")
}

元画像(sf.jpg)


出力画像(sample1079a.png)
ScriptomとImageMagickで油絵調に変換した画像

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

SVGRendererで直線を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample956a.svg", 200, 200){
line( x1:0, y1:0, x2: 200, y2:200,
borderColor: color("#103080"),
borderWidth: 2
)
}


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

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

関連項目
groovyで直線を描画する (GraphicsRendererによる直線描画)
SVGRendererで四角を描画する

Monday, May 11, 2009

RMagickで画像を点画のように変換する

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


require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images.modulate(1, 2.5, 1).
sketch(0,10,135).spread(1).
write("sample1076a.png")

exit


元画像(sf.jpg)


出力画像(sample1076a.png)
RMagickで点画のように変換した画像

動作環境
ruby1.8.6, rmagick2.9.0

関連項目
ImageMagickで画像を点画のように変換する (convertコマンドでの同様の処理)

SVGRendererで円を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample955a.svg", 200, 200){
circle( cx: 100, cy: 100, radius:80,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample955a.svg)をPNGにレンダリングした画像
SVGRendererで出力した丸の画像

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

関連項目
SVGRendererで四角を描画する
SVGRendererでドーナツ型を描画する
groovyで円を描画する (GraphicsRendererでの同様の処理)

Sunday, May 10, 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>sample1104(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick("sf.jpg");
$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$im->setImageMatte(true);
$points = array(100,0, 110,20,
200,100, 190,110,
100,200, 90,190,
0,100, 10,90,
0,200, 0,180);
// ShepardsDistortion=14 in distort.h
$im->distortImage(14, $points, false);

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

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

</body>
</html>


元画像(sf.jpg)


出力画像(sample1104a.png)
Imagickで変形させた画像

関連項目
ImageMagickで画像を変形させる (convertコマンドによる同様の処理)
ImageMagickとPHPで画像を扇形に変形させる
WindowsでImageMagickをPHPから使用するための設定

SVGRendererで四角を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample954a.svg", 200, 200){
rect( x:10, y:10, width:180, height:180,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


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

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

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

Saturday, May 09, 2009

RMagickで画像を立体的なタイル風に変換する

RMagickで画像を立体的なタイル風に変換するには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new("sf2.jpg")
images.alpha = ActivateAlphaChannel

# 角丸四角を描画
images2 = ImageList.new
images2.new_image(40, 40){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "white"
dr.roundrectangle(2,2, 37,37, 4,4)
dr.draw(images2)

# タイル上に配置
images3 = ImageList.new
images3.new_image(images.columns, images.rows,
TextureFill.new(images2))
images3.alpha = ActivateAlphaChannel

# 切り取り
img = images.composite(images3, 0, 0,
DstInCompositeOp).modulate(1.4)
img.colorspace = GRAYColorspace
img = img.colorize(0.5, 0.5, 0.5, "#fad759")

# 立体的にする
img2 = images3.shade(true, 135, 23).
blur_channel(0,2,AllChannels).normalize()

img4 = img2.composite(img, 0, 0,
OverlayCompositeOp)
img4.write("sample997a.png")

exit


元画像(sf2.jpg)


出力画像(sample997a.png)
RMagickで立体的なタイル風に変換した画像

動作環境
ruby1.8.6, rmagick2.9.0

関連項目
ImageMagickで画像から立体的なタイル画像に変換する (convertコマンドによる同様の処理)
RMagickで画像を角丸四角に切り取って立体的にする

ScriptomとImageMagickで画像を回転させる

ScriptomとImageMagickで画像を回転させるには、以下のコードを実行します。


import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
// 回転した余白の色は-backgroundで指定します。
im.convert("sf.jpg", "-background", "#bbddff", "-rotate", "10",
"sample1078a.png")
// 回転した余白の色を透明にしたい場合は、noneを指定します。
im.convert("sf.jpg", "-background", "none", "-rotate", "10",
"sample1078b.png")
}


元画像(sf.jpg)


出力画像1(sample1078a.png)


出力画像2(sample1078b.png)
ScriptomとImageMagickで回転させた画像

動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

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

IMOperation op = new IMOperation();
op.addImage("sample3b.png");
// op.alpha("activate");
// op.channel("rgba");
IMOperation so1 = op.openOperation();
so1.size(100, 100);
so1.addImage("gradient:#ffffffff-#00000000");
op.closeOperation();
op.compose("copy-opacity");
op.composite();

IMOperation so2 = op.openOperation();
so2.size(200, 200);
so2.addImage("sf.png");
op.closeOperation();
op.p_swap();
op.geometry(100, 100, 20, 20);
op.compose("src-over");
op.composite();
op.addImage("sample1076a.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");
*/
}
}
}



元画像1(sf.png)


元画像2(sample3b.png)


出力画像(sample1076a.png)
im4javaで半透明グラデーションをかけて重ね合わせた画像

関連情報
im4javaのまとめ

ImageMagickで画像に半透明グラデーションをかける (convertコマンドによる同様の処理)

groovyで画像をビデオ風に加工する

groovyで画像をビデオ風に加工するには、以下のコードを実行します。


import java.awt.image.*;
import javax.imageio.*;

img = ImageIO.read(new File("sf.jpg"))
WritableRaster wr = img.getRaster()
buf = new int[wr.getNumDataElements()];

for(ly in (0..wr.height-1).step(2)){
for(lx in 0..wr.width-1){
wr.getPixel(lx, ly, buf)
buf[0] = buf[0]/2;
buf[1] = buf[1]/2;
buf[2] = buf[2]/2;
wr.setPixel(lx, ly, buf)
}
}

ImageIO.write(img, "png", new File("sample953a.png"));


元画像(sf.jpg)


出力画像(sample953a.png)
groovyでビデオ風に加工した画像

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

関連項目
Java2Dで画像をビデオ風にする

Thursday, May 07, 2009

ImageMagickでちぎったような紙を描画する

ImageMagickでちぎったような紙を描画するには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 200x200 xc:none -fill #fffee0 -draw "rectangle 20,20 179,179" -spread 6 -median 3 ( +clone -edge 1 -blur 0x1 -alpha activate -channel a -fx "r" -channel rgb -fx "#D0C0C0" ) -composite sample1090a.png


出力画像(sample1090a.png)