import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
public class Java2DTest18
{
   public static void main(String args[])
       throws Exception
   {
       /* 画像の上に半透明のぼやけた文字列を描画する */
       BufferedImage img = ImageIO.read(new File("sf.jpg"));
       Graphics2D gr = img.createGraphics();
       /* 文字列描画用のBufferedImageを作成 */
       BufferedImage img2 = new BufferedImage(
           img.getWidth(), img.getHeight(),
           BufferedImage.TYPE_INT_ARGB_PRE
       );
       Graphics2D gr2 = img2.createGraphics();
       /* 文字列を描画 */
       gr2.setColor(new Color(0xff, 0xff, 0xff, 0xf0));
       gr2.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 28));
       gr2.drawString("San Francisco", 10, 150);
       gr2.dispose();
       /* 文字列をぼかす */
       float kernel[] = new float[3*3];
       for(int li=0;li<3*3;li++){
           kernel[li] = 1f/(3*3);
       }
       BufferedImageOp bio = new ConvolveOp(new Kernel(3, 3, kernel),
           ConvolveOp.EDGE_NO_OP, new RenderingHints(new HashMap()));
       BufferedImage img3 = bio.filter(img2, null);
       /* ぼかした文字列を半透明にして合成 */
       gr.drawImage(img3, 0, 0, null);
       gr.dispose();
       ImageIO.write(img, "jpg", new File("sample542a.jpg"));
   }
}
元画像(sf.jpg)
出力画像(sample542a.jpg)

環境
JDK6 Upadate6(JDK1.6.0_06)
関連項目
Java2Dで文字列をテクスチャ画像で塗りつぶす
Java2Dで文字列を描画する
 
No comments:
Post a Comment