Saturday, October 04, 2008

librsvgをwindowsで使用してSVGからPNG画像を生成する

Windowsでlibrsvgをインストールするには、以下の手順でおこないます。

1. GTKインストール
http://sourceforge.net/projects/gladewin32/
から、gtk-dev-2.12.9-win32-2.exeをダウンロードし、インストール

2. rsvg-convert, rsvg-viewのインストール
http://ftp.gnome.org/pub/gnome/binaries/win32/librsvg/2.22/
からlibrsvg-dev-2.22.2.zipをダウンロード解凍。
解凍した後にbinディレクトリにパスを通しておきます。

SVGファイル(svgtest1.svg)からPNG画像を生成するには、以下のコマンドを実行します。

rsvg-convert svgtest1.svg -f png -o sample669.png

svgtest1.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" width="200"
height="200">
<rect x="20" y="20" width="100" height="100" rx="20" fill="#bbddff"
stroke="#8899ee" stroke-width="1px" />
<rect x="100" y="90" width="80" height="80" rx="10" fill="#cac0c0"
stroke="#999999" stroke-width="2px" fill-opacity="0.3" />
</svg>




出力画像(sample669.png)

Java2DとJava Image Filters(pixels)を使用して鏡面画像を作成する

Java2DとJava Image Filters(pixels)を使用して鏡面画像を作成するには、以下のコードを実行します。

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

public class Java2DTest47
{
public static void main(String args[])
throws Exception
{
/* 鏡面画像 */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
BufferedImage img2 = new BufferedImage(
200, 400, BufferedImage.TYPE_INT_ARGB_PRE
);
Graphics2D gr = img2.createGraphics();
gr.drawImage(img,0,0,null);
gr.dispose();

MirrorFilter mf = new MirrorFilter();
/* 角度 */
// not implemented?
//mf.setAngle(0f/180f*ImageMath.PI);
/* 距離 */
// not implemented?
//mf.setDistance(0);
/* 回転 */
// not implemented?
//mf.setRotation(0f/180f*ImageMath.PI);
/* gap */
mf.setGap(0.01f);
/* 透明度 */
mf.setOpacity(0.6f);
/* 中央Y */
mf.setCentreY(0.5f);

BufferedImage img3 = mf.filter(img2, null);
BufferedImage img4 = new BufferedImage(
200, 400, BufferedImage.TYPE_INT_RGB
);
Graphics2D gr2 = img4.createGraphics();
gr2.drawImage(img3,0,0,null);
gr2.dispose();

ImageIO.write(img4, "jpg", new File("sample578a.jpg"));
}
}

元画像(sf.jpg)


出力画像(sample578a.jpg)



関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html

Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/

java.netでのプロジェクトページ
https://pixels.dev.java.net/

Friday, October 03, 2008

Python Imaging Libraryを使用して画像を重ね合わせる

Python Imaging Libraryを使用して画像を重ね合わせるには、以下のコードを実行します。

# coding=UTF-8
import Image
# 画像の合成
img1 = Image.open("sf.jpg")
img2 = Image.open("sample6.jpg")
img1.paste(img2, (10,10))
img1.save("sample529.jpg")

元画像1(sf.jpg)


元画像2(sample6.jpg)


出力画像(sample529.jpg)


関連情報
Python Imaging Libraryまとめ

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>sample642(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像に半透明のぼけた矩形を描画してその上に文字列を描画する */
$im = new Imagick("sf.jpg");
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
/* 塗りつぶし色設定 */
$idraw->setFillColor('#ffffffa0');
$idraw->rectangle(50, 50, 150, 150);
$im2->drawImage($idraw);
$im2->blurImage(10, 10, Imagick::CHANNEL_ALL);
/* 重ね合わせ */
$im->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0);
$idraw2 = new ImagickDraw();
/* フォント設定 */
$idraw2->setFont("Comic-Sans-MS-Bold");
/* フォントサイズ設定 */
$idraw2->setFontSize(20);
/* 塗りつぶし色設定 */
$idraw2->setFillColor('#808080ff');
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_CENTER);
$im->annotateImage($idraw2, 0, 0, 0, "Sample");
$im->drawImage($idraw2);


$im->writeImage('sample642a.jpg');

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample642a.jpg)


関連項目
ImageMagickで半透明のぼかし四角形と文字列を重ね合わせる

Thursday, October 02, 2008

Java2DとJava Image Filters(pixels)を使用して画像をスクロールさせる

Java2DとJava Image Filters(pixels)を使用して画像をスクロールさせるには、以下のコードを実行します。

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

public class Java2DTest46
{
public static void main(String args[])
throws Exception
{
/* 画像をスクロール(ロール)させる */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

OffsetFilter of = new OffsetFilter();
/* Xオフセット */
of.setXOffset(50);
/* Yオフセット */
of.setYOffset(50);
/* wrap指定 */
of.setWrap(true);

BufferedImage img2 = of.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample577a.jpg"));
}
}

元画像(sf.jpg)


出力画像(sample577a.jpg)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html

Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/

java.netでのプロジェクトページ
https://pixels.dev.java.net/

Wednesday, October 01, 2008

Python Imaging Libraryを使用して画像のサイズを変更する

Python Imaging Libraryを使用して画像のサイズを変更するには、以下のコードを実行します。

# coding=UTF-8
import Image

img = Image.open("sf.jpg")
# 画像のリサイズ
img = img.resize((100, 100))
img.save("sample528.jpg")

元画像(sf.jpg)


出力画像(sample528.jpg)


関連情報
Python Imaging Libraryまとめ

Tuesday, September 30, 2008

ImageMagickで色数を取得します。

ImageMagickで色数を取得するには以下のバッチファイルを実行します。

rem 環境によって変えてねset im=C:\Progra~1\ImageMagick-6.4.3-Q16%im%\identify.exe -format "unique colors:%%k" sample616a.png

下の画像に対してバッチを実行すると4が表示されます。


関連項目
ImageMagickで画像の幅・高さを取得する

Java2DとJava Image Filters(pixels)を使用して木目調の画像を生成する

Java2DとJava Image Filters(pixels)を使用して木目調の画像を生成するには、以下のコードを実行します。


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

public class Java2DTest45
{
public static void main(String args[])
throws Exception
{
/* 木目調のテクスチャを生成する */
BufferedImage img = new BufferedImage(
200, 200, BufferedImage.TYPE_INT_RGB
);


WoodFilter wf = new WoodFilter();
/* rings value */
wf.setRings(0.5f);
/* スケール */
wf.setScale(200);
/* 伸張率 */
wf.setStretch(8.0f);
/* 角度 */
wf.setAngle(10f/180f*ImageMath.PI);
/* 乱れ */
wf.setTurbulence(0.2f);
/* 繊維の量 */
wf.setFibres(0.5f);


BufferedImage img2 = wf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample576a.jpg"));
}
}

出力画像(sample576a.jpg)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html

Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/

java.netでのプロジェクトページ
https://pixels.dev.java.net/

Monday, September 29, 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>sample641(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像をスクロールさせる */
/* x方向 */
$im = new Imagick("sf.jpg");
$im->rollImage(20,0);
$im->writeImage('sample641a.jpg');
/* y方向 */
$im2 = new Imagick("sf.jpg");
$im2->rollImage(0,50);
$im2->writeImage('sample641b.jpg');

/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>
<img src="sample641a.jpg" />
<img src="sample641b.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample641a.jpg)


出力画像(sample641b.jpg)

Java2DとJava Image Filters(pixels)を使用して画像を拡散させる

Java2DとJava Image Filters(pixels)を使用して画像を拡散させるには、以下のコードを実行します。

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

public class Java2DTest44
{
public static void main(String args[])
throws Exception
{
/* 画像を拡散させる */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
DiffuseFilter df = new DiffuseFilter();
/* スケール */
df.setScale(10);
BufferedImage img2 = df.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample575a.jpg"));
}
}

元画像(sf2.jpg)


出力画像()


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html

Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/

java.netでのプロジェクトページ
https://pixels.dev.java.net/

Sunday, September 28, 2008

Java2DとJava Image Filters(pixels)を使用して画像を減色する

Java2DとJava Image Filters(pixels)を使用して画像を減色するには、以下のコードを実行します。

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

public class Java2DTest43
{
public static void main(String args[])
throws Exception
{
/* 画像を減色する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
QuantizeFilter qf = new QuantizeFilter();
/* 色数 */
qf.setNumColors(64);
/* ディザ使用 */
qf.setDither(true);
/* サーペンタインパターンを使用するか */
qf.setSerpentine(true);
BufferedImage img2 = qf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample574a.jpg"));
}
}

元画像(sf.jpg)


出力画像(sample574a.jpg)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html

Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/

java.netでのプロジェクトページ
https://pixels.dev.java.net/