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)

○関連情報
・libsvgに関する他の記事はこちらを参照してください。

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/

Saturday, September 27, 2008

ImageMagickで画像を4色グレースケールの画像に減色する

ImageMagickで画像を4色グレースケールの画像に減色するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.3-Q16
%im%\convert.exe sf.jpg -colorspace gray -colors 4 sample616a.png

元画像(sf.jpg)


出力画像(sample616a.png)
ImageMagickで4色グレースケールに減色した画像

関連項目
ImageMagickで画像を減色する
ImageMagickとPHPで画像を4色グレースケールに変換する (Imagickでの同様の処理)

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 Java2DTest42
{
public static void main(String args[])
throws Exception
{
/* 立体的な文字を描画する */
BufferedImage img = new BufferedImage(
200, 70, BufferedImage.TYPE_INT_ARGB_PRE
);
Graphics2D gr = img.createGraphics();
gr.setColor(new Color(0xff, 0xff, 0xff, 0xff));
gr.setFont(new Font("Tahoma", Font.BOLD, 50));
gr.drawString("Sample", 5, 50);
gr.dispose();

ChromeFilter cf = new ChromeFilter();
/* effect量 */
cf.setAmount(0.3f);
/* 露光量 */
cf.setExposure(1.0f);
BufferedImage img2 = cf.filter(img, null);

BufferedImage img3 = new BufferedImage(
200, 70, BufferedImage.TYPE_INT_RGB
);
Graphics2D gr2 = img3.createGraphics();
gr2.drawImage(img2,0,0,null);
gr2.dispose();

ImageIO.write(img3, "jpg", new File("sample573a.jpg"));
}
}

出力画像(sample573a.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, September 26, 2008

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>sample640(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像をタイル配置する */
$im = new Imagick();
$im->newPseudoImage(150,150, "tile:C:\\share\\docs\\20080926b\\flower1.png");
$im->writeImage('sample640a.jpg');

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

</body>
</html>

元画像(flower1.png)


出力画像(sample640a.jpg)
Imagickでタイル配置した画像

関連項目
ImageMagickとPHPで画像をタイル配置した角丸四角で切り取る

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 Java2DTest41
{
public static void main(String args[])
throws Exception
{
/* 市松模様を描画する */

BufferedImage img = new BufferedImage(
200, 200, BufferedImage.TYPE_INT_RGB
);
CheckFilter cf = new CheckFilter();
/* 前景色 */
cf.setForeground(0xffffffff);
/* 背景色 */
cf.setBackground(0xff000000);
/* xサイズ */
cf.setXScale(16);
/* yサイズ */
cf.setYScale(16);
/* あいまいさ */
cf.setFuzziness(20);
/* 角度 */
cf.setAngle(45f/180f*ImageMath.PI);

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

出力画像(sample572a.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/

Thursday, September 25, 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 Java2DTest40
{
public static void main(String args[])
throws Exception
{
/* レンズフレアを描画する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

FlareFilter ff = new FlareFilter();
/* 描画色 */
ff.setColor(0xffffffff);
/* 輪の太さ */
ff.setRingWidth(1.2f);
/* ベースのeffect量 */
ff.setBaseAmount(0.9f);
/* 輪のeffect量 */
ff.setRingAmount(0.2f);
/* 光線の量 */
ff.setRayAmount(1.4f);
/* 中心 */
ff.setCentre(new Point2D.Float(0.7f, 0.3f));
/* 半径 */
ff.setRadius(70f);
BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample571a.jpg"));
}
}

元画像(sf.jpg)


出力画像(sample571a.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, September 24, 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 Java2DTest39
{
public static void main(String args[])
throws Exception
{
/* 画像を球状に変換する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

PolarFilter sf = new PolarFilter(PolarFilter.RECT_TO_POLAR);
BufferedImage img2 = sf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample570a.jpg"));
}
}

元画像(sf.jpg)


出力画像(sample570a.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/

Tuesday, September 23, 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 Java2DTest38
{
public static void main(String args[])
throws Exception
{
/* 画像を傾ける */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

ShearFilter sf = new ShearFilter();
/* 画像のリサイズをおこなうか */
sf.setResize(true);
/* x角度 */
sf.setXAngle(45f/180f*ImageMath.PI);
BufferedImage img2 = sf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample569a.jpg"));
}
}

元画像(sf.jpg)


出力画像(sample569a.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 22, 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 Java2DTest37
{
public static void main(String args[])
throws Exception
{
/* 等高線をつける */
BufferedImage img = ImageIO.read(new File("sample3b.jpg"));

ContourFilter cf = new ContourFilter();
/* レベル */
cf.setLevels(10);
/* スケール */
cf.setScale(2f);
/* オフセット */
cf.setOffset(0f);

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

元画像(sample3b.jpg)


出力画像(sample568a.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/

ImageMagickとPHPでアニメーションGIFをファイルに保存せず直接出力する

ImageMagickとPHPでアニメーションGIFをファイルに保存せず直接出力するには、以下のコードを実行します。
newImage(200, 40, "white");
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* 塗りつぶし色設定 */
$idraw->setFillColor('#bbddff');
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_NORTH);
$img->annotateImage($idraw, 0, 0, 0, "ImageMagick");
/* フォーマットを設定 */
$img->setImageFormat("gif");
/* ディレイを設定 */
$img->setImageDelay(50);
$img2 = new Imagick();
$img2->newImage(200, 40, "white");
/* フォーマットを設定 */
$img2->setImageFormat("gif");
/* ディレイを設定 */
$img2->setImageDelay(50);
$img->addImage($img2);
Header("Content-Type: image/gif");
echo $img->getImagesBlob();
/* $idraw->clear(); 2008/09/30追記:destroyと同様にClearDrawingWandを呼ぶので必要なし */
$idraw->destroy();
/* $img->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$img->destroy();
?>

上記コードでは、文字列が点滅するアニメーションを直接返しています。

関連項目
ImageMagickとPHPで画像をファイルとして保存せずに直接出力する