Thursday, March 18, 2010

Java2DとJava Image Filters(pixels)を使用して画像を手書き風に変換する

Java2DとJava Image Filters(pixels)を使用して画像を手書き風に変換するには、以下のコードを実行します。


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

public class Java2DTest73
{
public static void main(String args[])
throws Exception
{
/* 手書き画像風に変換 */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
BufferedImage imga = new BufferedImage(
img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_ARGB
);
// 拡散
DiffuseFilter gf = new DiffuseFilter();
gf.setScale(3);
img = gf.filter(img, imga);

// モーションブラー
MotionBlurFilter mbf = new MotionBlurFilter(12f, 100f, 0.0f, 0.0f);
img = mbf.filter(img, null);

BufferedImage img2 = new BufferedImage(
img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_ARGB
);
ScratchFilter sf = new ScratchFilter();
sf.setAngle(10);
sf.setAngleVariation(0.08f);
sf.setColor(0xff808080);
sf.setDensity(3.9f);
sf.setLength(0.06f);
sf.setWidth(0.7f);
sf.setSeed(2010);

img2 = sf.filter(img2, null);

CompositeFilter cf = new CompositeFilter(
MiscComposite.getInstance(MiscComposite.ADD, 0.25f));

BufferedImage img5 = cf.filter(img2, img);

ImageIO.write(img5, "png", new File("sample1974a.png"));
}
}


元画像(sf2.jpg)


出力画像(sample1974a.png)
Java2DとJava Image Filtersで手書き風に変換した画像

関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

No comments: