Saturday, September 20, 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 Java2DTest35
{
public static void main(String args[])
throws Exception
{
/* 水面背景 */
BufferedImage img = new BufferedImage(
200, 200, BufferedImage.TYPE_INT_RGB
);

CausticsFilter cf = new CausticsFilter();
/* スケール */
cf.setScale(32f);
/* 明るさ */
cf.setBrightness(15);
/* 乱れ */
cf.setTurbulence(0.9f);
/* effect量 */
cf.setAmount(1.1f);
/* 拡散 */
cf.setDispersion(1f);
/* 時間 */
cf.setTime(0.1f);
/* サンプル */
cf.setSamples(10);
BufferedImage img2 = cf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample566a.jpg"));
}
}

出力画像(sample566a.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 19, 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 Java2DTest34
{
public static void main(String args[])
throws Exception
{
/* 水面下のようなeffectをかける */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

SwimFilter sf = new SwimFilter();
/* swimの量 */
sf.setAmount(10f);
/* スケール */
sf.setScale(32f);
/* 引き伸ばし */
sf.setStretch(10f);
/* アングル */
sf.setAngle(10f/180f*ImageMath.PI);
/* 乱れ */
sf.setTurbulence(1f);
/* 時間 */
sf.setTime(0.1f);
BufferedImage img2 = sf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample565a.jpg"));
}
}

元画像(sf2.jpg)


出力画像(sample565a.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 18, 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>sample564(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像の任意の領域をぼかして半透明の色を重ね合わせる */

$im = new Imagick("sf2.jpg");
$im->blurImage(10, 10, Imagick::CHANNEL_ALL);
$idraw = new ImagickDraw();
$idraw->setFillColor('#ffffff60');
$idraw->rectangle(0, 0,
$im->getImageWidth(), $im->getImageHeight());
$im->drawImage($idraw);

/* マスク作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw2 = new ImagickDraw();
$idraw2->setFillColor('white');
$idraw2->rectangle(10, 10, 140, 215);
$im2->drawImage($idraw2);
/* マスクを使用して切り取り */
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

/* 元画像と重ね合わせ */
$im3 = new Imagick("sf2.jpg");
$im3->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);

$im3->writeImage('sample564a.jpg');

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

</body>
</html>

元画像(sf2.jpg)


出力画像(sample564a.jpg)


関連項目
ImageMagickで半透明矩形を描画して、その背景部分だけぼかす (Convertコマンドによる同様の処理)

Wednesday, September 17, 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 Java2DTest33
{
public static void main(String args[])
throws Exception
{
/* メタル風の画像を生成する */
BufferedImage img = new BufferedImage(
200, 200, BufferedImage.TYPE_INT_RGB
);

BrushedMetalFilter bmf = new BrushedMetalFilter(
0xffb0b0b4, /* 金属の色 */
20, /* 水平方向ぼかしのサイズ */
0.15f, /* ノイズの量 */
false, /* モノクロームの場合true */
0.1f /* 輝きの量 */
);

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

出力画像(sample563a.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 16, 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 Java2DTest32
{
public static void main(String args[])
throws Exception
{
/* 画像を回転させる */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

RotateFilter rf = new RotateFilter(45f/180f*ImageMath.PI, true);

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

元画像(sf2.jpg)


出力画像(sample562a.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 15, 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 Java2DTest31
{
public static void main(String args[])
throws Exception
{
/* エッジ抽出処理 */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

EdgeFilter ef = new EdgeFilter();

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

元画像(sf2.jpg)


出力画像(sample561a.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 14, 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>sample560(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 文字列にモーションブラーをかける */

$im = new Imagick();
$im->newImage(200, 50, '#f0eee4');

$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* 塗りつぶし色設定 */
$idraw->setFillColor('#707070');
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_NORTH);
$im->annotateImage($idraw, 0, 0, 0, "ImageMagick");
$im->motionBlurImage(0,10,270);
/* 再度、文字列を描画 */
$idraw->setFillColor('#303030');
$im->annotateImage($idraw, 0, 0, 0, "ImageMagick");

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

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

</body>
</html>

出力画像(sample560a.jpg)


関連項目
ImageMagickとPHPで透過PNGに影付けして、影にモーションブラーをかける
ImageMagickとPHPで画像にモーションブラーをかける
ImageMagickで、文字列にモーションブラーをかける (Convertコマンドでの同様の処理)
ImageMagickで上下左右方向に徐々にモーションブラーをかける

Saturday, September 13, 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 Java2DTest30
{
public static void main(String args[])
throws Exception
{
/* 左右反転・上下反転処理 */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

FlipFilter ff = new FlipFilter();
/* 左右反転 */
ff.setOperation(FlipFilter.FLIP_H);

BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample559a.jpg"));


BufferedImage img3 = ImageIO.read(new File("sf.jpg"));

FlipFilter ff2 = new FlipFilter();
/* 上下反転 */
ff2.setOperation(FlipFilter.FLIP_V);

BufferedImage img4 = ff2.filter(img3, null);
ImageIO.write(img4, "jpg", new File("sample559b.jpg"));

}
}

元画像(sf.jpg)


出力画像(sample559a.jpg)


出力画像(sample559b.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 12, 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 Java2DTest29
{
public static void main(String args[])
throws Exception
{
/* 球面処理 */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

SphereFilter sf = new SphereFilter();
/* 屈折率 */
sf.setRefractionIndex(1.9f);
/* 半径 */
sf.setRadius(80);
/* 中心 */
sf.setCentreX(0.6f);
sf.setCentreY(0.6f);

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

元画像(sf.jpg)


出力画像(sample558a.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 11, 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 Java2DTest28
{
public static void main(String args[])
throws Exception
{
/* きらめく放射を描画する */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

SparkleFilter sf = new SparkleFilter();
/* 線の数 */
sf.setRays(25);
/* きらめきの量 */
sf.setAmount(55);
/* ランダムさ */
sf.setRandomness(50);
/* 色 */
sf.setColor(0xffffff0);

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

元画像(sf.jpg)


出力画像(sample557a.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 10, 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>sample556(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 縁を明るくして角丸四角に切り取る */

$px = 10;
$py = 10;
$rx = 20;
$ry = 20;
$sw = 20;
$im = new Imagick("sf2.jpg");
/* 角丸四角のマスクを作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
$idraw->setFillColor('#ffffff');
$idraw->setStrokeWidth(0);
$idraw->roundrectangle($px,$py,
$im->getImageWidth()-$px-1, $im->getImageHeight()-$py-1, $rx, $ry);
$im2->drawImage($idraw);
$idraw->clear();
$idraw->destroy();
/* マスクを使用して切り取り */
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

$im3 = new Imagick("sf2.jpg");
$im3 = $im3->fxImage("p*1.5");

/* 角丸四角のマスクを作成 */
$im4 = new Imagick();
$im4->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw2 = new ImagickDraw();
$idraw2->setFillColor('#ffffff');
$idraw2->setStrokeColor('#ffffff');
$idraw2->setStrokeWidth($sw);
$idraw2->roundrectangle($px,$py,
$im->getImageWidth()-$px-1, $im->getImageHeight()-$py-1, $rx, $ry);
$im4->drawImage($idraw2);
$idraw2->clear();
$idraw2->destroy();
/* マスクを使用して切り取り */
$im4->compositeImage($im3, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

/* 重ね合わせ */
$im4->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);

/* 白背景と合成 */
$im5 = new Imagick();
$im5->newImage($im->getImageWidth(), $im->getImageHeight(), "white");
$im5->compositeImage($im4, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);


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

</body>
</html>

元画像(sf2.jpg)


出力画像(sample556a.jpg)


関連項目
ImageMagickで、縁を明るくして角丸四角に切り取る (Convertコマンドでの同様の処理)
ImageMagickとPHPで画像を角丸四角に切り取って文字入れする

Tuesday, September 09, 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 Java2DTest27
{
public static void main(String args[])
throws Exception
{
/* 画像にエンボス処理をかける */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

EmbossFilter ef = new EmbossFilter();
/* 方位 */
ef.setAzimuth(45f * ImageMath.PI / 180f);
/* 仰角 */
ef.setElevation(30f * ImageMath.PI / 180f);
/* 段差 */
ef.setBumpHeight(2);
/* trueなら元の色を残す */
ef.setEmboss(false);
BufferedImage img2 = ef.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample555a.jpg"));
}
}

元画像(sf2.jpg)


出力画像(sample555a.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 08, 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 Java2DTest26
{
public static void main(String args[])
throws Exception
{
/* 画像を台形変形させる */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

PerspectiveFilter pf = new PerspectiveFilter(
25, 30, /* 左上の座標 */
175, 30, /* 右上の座標 */
200, 200, /* 右下の座標 */
0, 200 /* 左下の座標 */
);

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

元画像(sf.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 07, 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 Java2DTest25
{
public static void main(String args[])
throws Exception
{
/* 画像を油絵風に変換する */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

OilFilter of = new OilFilter();
/* ピクセルでの効果範囲 */
of.setRange(5);
/* 効果のレベル */
of.setLevels(64);

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

元画像(sf2.jpg)


出力画像(sample553a.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 06, 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>sample552(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* プラズマフラクタル画像を用いて画像に濃淡をつける */
$im = new Imagick("sf.jpg");

/* プラズマフラクタル画像 */
$im2 = new Imagick();
$im2->newPseudoImage(200, 200, 'plasma:fractal');
$im3 = $im2->fxImage("intensity");
$im3->contrastImage(false);
$im3->contrastImage(false);

/* overlayで重ね合わせ */
$im->compositeImage($im3, Imagick::COMPOSITE_OVERLAY, 0, 0, Imagick::CHANNEL_ALL);


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

</body>
</html>

元画像(sf.jpg)


出力画像(sample552a.jpg)


関連項目
ImageMagickで、画像にプラズマフラクタル画像を重ね合わせて濃淡をつける (Convertコマンドでの同様の処理)

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

PointillizeFilter pf = new PointillizeFilter();
/* スケール */
pf.setScale(12);
/* エッジを表示するかどうか */
pf.setFadeEdges(false);
/* エッジの厚さ */
pf.setEdgeThickness(0.4f);
/* ランダムさ */
pf.setRandomness(0.2f);
/* あいまいさ */
pf.setFuzziness(0.2f);

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

元画像(sf.jpg)


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

groovyで画像を点状に変換する

Thursday, September 04, 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 Java2DTest23
{
public static void main(String args[])
throws Exception
{
/* 画像にひねりをかける */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

TwirlFilter tf = new TwirlFilter();
/* 角度 */
tf.setAngle(1.5f);
/* 中央座標X */
tf.setCentreX(0.4f);
/* 中央座標Y */
tf.setCentreY(0.6f);
/* 半径 */
tf.setRadius(150f);

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

元画像(sf2.jpg)


出力画像(sample550a.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 03, 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>sample549(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像を端がちぎれたようなセピア色のスケッチ画像に変換する */
$im = new Imagick("sf.jpg");
/* セピアトーン */
$im->sepiaToneImage(80);
/* スケッチ処理 */
$im->sketchImage(10,0,120);

/* 端がちぎれたようなマスクを作成 */
$px = 10;
$py = 10;
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
$idraw->setFillColor('white');
$idraw->rectangle($px, $py,
$im->getImageWidth()-$px, $im->getImageHeight()-$py);
$im2->drawImage($idraw);
$im2->spreadImage(5);
$im2->medianFilterImage(3);

/* マスクを使用して切り取り */
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

/* 白色背景と重ね合わせ */
$im3 = new Imagick();
$im3->newImage($im->getImageWidth(), $im->getImageHeight(), "white");
$im3->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample549a.jpg)


関連項目
ImageMagickで、画像を端がちぎられたようなスケッチ調の画像に変換する (Convertコマンドでの同様の処理)

Tuesday, September 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 Java2DTest22
{
public static void main(String args[])
throws Exception
{
/* 画像にマーブルフィルタをかける */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

MarbleFilter mf = new MarbleFilter();
/* Xスケールの設定 */
mf.setXScale(8f);
/* Yスケールの設定 */
mf.setYScale(8f);
/* マーブルフィルタをかける量 */
mf.setAmount(1.0f);
/* 荒れ具合を指定 */
mf.setTurbulence(0.7f);

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

元画像(sf2.jpg)


出力画像(sample548a.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 01, 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 Java2DTest21
{
public static void main(String args[])
throws Exception
{
/* 画像をステンドグラス状に変換する */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));

CrystallizeFilter cf = new CrystallizeFilter();
/* スケールの設定 */
cf.setScale(8);
/* エッジを消すかどうか */
cf.setFadeEdges(false);
/* エッジの幅 */
cf.setEdgeThickness(0.4f);
/* ランダムさ */
cf.setRandomness(0.5f);

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

元画像(sf2.jpg)


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