Wednesday, December 31, 2008

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)

Saturday, December 20, 2008

ImageMagickで白と透明色の市松模様の文字列を描画する

ImageMagickで白と透明色の市松模様の文字列を描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.4-Q16
rem 白と透明色の市松模様の文字列画像を生成
%im%\convert.exe -size 300x80 xc:none -stroke none -tile pattern:GRAY50 -font Comic-Sans-MS-Bold -gravity center +antialias -draw "font-size 40 text 0,0 'ImageMagick'" -transparent black sample728a.png
rem 元画像と生成した文字列画像を重ね合わせ
%im%\convert.exe sf2.jpg sample728a.png -composite sample728b.png

上記バッチファイルではGRAY50パターン(白黒の市松模様)をantialiasなしで
文字列を描画した後、黒色部分を透明色に変えて(-transparent black)います。
その後に、元画像と重ね合わせをしています。

元画像(sf2.jpg)


出力画像(sample728b.png)

Java2Dで画像の上に垂直に傾けた文字列を描画する

Java2Dで画像の上に垂直に傾けた文字列を描画するには、以下のコードを実行します。


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

public class Java2DTest19
{
public static void main(String args[])
throws Exception
{
/* 文字列を縦に傾けて画像上に描画する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
Graphics2D gr = img.createGraphics();
/* 半透明色で四角を描画 */
gr.setColor(new Color(0x00, 0x00, 0x00, 0x70));
gr.fill(new Rectangle2D.Double(0,0,20,200));

/* 回転させた文字列を描画 */
gr.setColor(new Color(0xff, 0xff, 0xff));
gr.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 14));
gr.rotate(270/180.0*Math.PI, 100, 100);
gr.drawString("San Francisco", 2, 15);
gr.dispose();

ImageIO.write(img, "jpg", new File("sample727a.jpg"));
}
}


元画像(sf.jpg)


出力画像(sample727a.jpg)


関連項目
Java2Dで画像の上に半透明のぼやけた文字列を描画する
Java2Dで文字列をテクスチャ画像で塗りつぶす

Friday, December 19, 2008

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

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


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

public class JMagickTest43
{
public static void main(String args[])
throws MagickException
{
/* プラズマフラクタル画像を生成する */
ImageInfo ii = new ImageInfo("plasma:fractal");
ii.setSize("150x150");
MagickImage mi = new MagickImage(ii);
mi.setFileName("sample724a.jpg");
mi.writeImage(new ImageInfo());
}
}


出力画像(sample724a.jpg)


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

関連情報
JMagickまとめ

Thursday, December 18, 2008

RMagickでマスクした部分を白黒にする

RMagickでマスクした部分を白黒にするには、以下のコードを実行します。

require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images2 = ImageList.new("mask.bmp")
# 白黒マスクから透過反転マスクを作成
images2.alpha = ActivateAlphaChannel
img = images2.fx("1-r", Magick::AlphaChannel)

# マスク画像で切り取り
img3 = img.composite(images[0], 0, 0, SrcInCompositeOp)
# グレースケール画像に変換
images[0].colorspace = ColorspaceType::GRAYColorspace
# 切り取った画像とグレースケール画像を重ね合わせ
img4 = images[0].composite(img3, CenterGravity, 0, 0, OverCompositeOp)
img4.write("sample716a.png")

exit

元画像(sf.jpg)


マスク画像(mask.bmp)


出力画像(sample716a.png)


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

関連項目
ImageMagickで、マスクした部分を白黒に変換する (Convertコマンドで同様の処理)

Wednesday, December 17, 2008

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>sample715(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 文字列の影に横線を入れる */
$im = new Imagick();
$im->newImage(200, 50, 'none');
$im->setImageMatte(true);

$idraw = new ImagickDraw();
/* 塗りつぶし色設定 */
$idraw->setFillColor('#707070');
/* フォント設定 */
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$im->annotateImage($idraw, 0, 0, 0, "ImageMagick");

/* 影つけ */
$im2=$im->clone();
$im2->setImageBackgroundColor('black');
$im2->shadowImage(70,3,5,5);

/* 1ラインごとに透明に */
$it = $im2->getPixelIterator();
foreach($it as $py => $line){
if($py%2 == 0 ){
foreach($line as $px => $pixel){
$pixel->setColorValue(Imagick::COLOR_ALPHA, 0);
}
}
$it->syncIterator();
}

/* 白背景と重ね合わせて保存 */
$im3 = new Imagick();
$im3->newImage($im->getImageWidth(), $im->getImageHeight(), "white");
$im3->addImage($im);
$im3->addImage($im2);
$im4=$im3->mosaicImages();

$im4->writeImage('sample715a.png');

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

</body>
</html>


出力画像(sample715a.png)


関連項目
ImageMagickで、文字列の影に横線をいれる (Convertコマンドによる同様の処理)
ImageMagickとPHPで透過PNGに影付けして、影にモーションブラーをかける

Tuesday, December 16, 2008

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>sample714(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像をグレースケールにする */
$im = new Imagick("sf.jpg");
$im->setImageColorspace(Imagick::COLORSPACE_GRAY);
$im->writeImage('sample714a.png');

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample714a.png)


関連項目
ImageMagickとPHPで指定された点を中心として徐々に画像を白黒化させる
ImageMagickとPHPで青っぽいところ以外を白黒にする
ImageMagickとPHPで画像上に描画した文字列以外の部分をグレースケールにする
ImageMagickとPHPで、画像の緑っぽい所以外は白黒にする

Monday, December 15, 2008

JMagickで画像をタイル配置する

JMagickで画像をタイル配置するには、以下のコードを実行します。

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

public class JMagickTest42
{
public static void main(String args[])
throws MagickException
{
/* 画像をタイル配置する */
ImageInfo ii = new ImageInfo("tile:flower1.png");
ii.setSize("200x200");
MagickImage mi = new MagickImage(ii);
mi.setFileName("sample713a.jpg");
mi.writeImage(new ImageInfo());
}
}

元画像(flower1.png)


出力画像(sample713a.jpg)


関連情報
JMagickまとめ

Sunday, December 14, 2008

ImageMagickで画像に立体的な角丸四角の枠をつける

ImageMagickで画像に立体的な角丸四角の枠をつけるには、以下のコードを実行します。

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

%im%\convert.exe -size 200x200 xc:none -stroke white -strokewidth 8 -fill none -draw "roundrectangle 10,10,190,190,10,10" ( +clone -blur 0x3 -shade 135x23 ) -compose hard-light -composite ( -size 200x200 xc:none -stroke white -strokewidth 8 -fill white -draw "roundrectangle 10,10,190,190,10,10" -matte -channel rgba sf.jpg -compose src_in -composite ) -swap 0,1 -compose src-over -composite sample712a.png

元画像(sf.jpg)


出力画像(sample712a.png)


関連項目
ImageMagickで、画像に半透明角丸四角の枠をつける
ImageMagickで、縁取りつきの角丸四角で画像を切り取る
ImageMagickで画像に立体的な枠をつける
ImageMagickで画像に半透明ガラス枠をつける
ImageMagickで画像にストライプ枠をつける