Thursday, October 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 Java2DTest52
{
public static void main(String args[])
throws Exception
{
/* 影付けする */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
BufferedImage img2 = new BufferedImage(
img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB
);
Graphics2D gr = img2.createGraphics();
gr.setColor(new Color(0xff, 0xff, 0xff, 0xff));
gr.setFont(new Font("Tahoma", Font.BOLD, 28));
gr.drawString("San Francisco", 5, 50);
gr.dispose();

// ShadowFilter sf = new ShadowFilter(3f,3f,-3f,0.8f);
ShadowFilter sf = new ShadowFilter();
/* 半径 */
sf.setRadius(7f);
/* 透明度 */
sf.setOpacity(0.9f);
/* 角度 */
sf.setAngle(300f/180f*ImageMath.PI);
/* 距離 */
sf.setDistance(5f);
/* 影の色 */
sf.setShadowColor(0xff202020);
/* 影のマージン */
sf.setAddMargins(false);
/* 影のみにするか */
sf.setShadowOnly(false);
BufferedImage img3 = sf.filter(img2, null);

Graphics2D gr2 = img.createGraphics();
gr2.drawImage(img3,0,0,null);
gr2.dispose();

ImageIO.write(img, "jpg", new File("sample583a.jpg"));
}
}

元画像(sf.jpg)


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

No comments: