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で上下左右方向に徐々にモーションブラーをかける