合成圖像:比如制作個性印章。首先需要準備2張圖,1張白色的圖片:bg.jpg,一張是印章的邊框的圖片template.gif,需要處理成透明。(制作這樣風格的圖片,可以使用photoshop的“置換”濾鏡):

template.gif
程序處理部分是需要把輸入的文字,和選擇的template合成到bg.jpg里,在這里,我硬編碼了輸入文字到程序里,template使用已經準備好了的template.gif,當然,可以有更多的template提供給用戶選擇。bg.jpg是一張90×90的jpg全白色文件。這些我都暫時放在C盤根目錄下。程序處理如下:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.*;
public class TestDrawFont {
public static void main(String[] args) {
try {
BufferedImage image = ImageIO.read(new FileInputStream("c:\\bg.jpg"));
Graphics2D g = image.createGraphics();
BufferedImage image_template = ImageIO.read(new FileInputStream("c:\\template.gif"));
g.setColor(Color.red);
g.setFont(new Font("漢鼎簡中黑",Font.ITALIC + Font.BOLD + Font.LAYOUT_LEFT_TO_RIGHT, 23));//寫入簽名
g.drawString("帥哥",22, image.getHeight() - 50);
g.drawString("印章",22, image.getHeight()-30);
g.drawImage(image_template, 5,image.getHeight() - 85, image_template.getWidth(null),image_template.getHeight(null), null);
g.dispose();
FileOutputStream out = new FileOutputStream("c:\\all.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
執行后的效果是:

補充一下:
Java 2 平臺可以區分兩種字體:物理 字體和邏輯 字體。
物理 字體是實際的字體庫,包含字形數據和表,這些數據和表使用字體技術(如 TrueType 或 PostScript Type 1)將字符序列映射到字形序列。Java 2 平臺的所有實現都支持 TrueType 字體;對其他字體技術的支持是與實現相關的。物理字體可以使用字體名稱,如 Helvetica、Palatino、HonMincho 或任意數量的其他字體名稱。通常,每種物理字體只支持有限的書寫系統集合,例如,只支持拉丁文字符或只支持日文和基本拉丁文。可用的物理字體集合隨配置的不同而不同。要求特定字體的應用程序可以使用 createFont 方法來捆綁這些字體,并對其進行實例化。
構造方法摘要
Font(String name, int style, int size)
根據指定名稱、樣式和點大小,創建一個新 Font
public abstract void drawString(String s,
float x,
float y)
public abstract void drawImage(BufferedImage img,
BufferedImageOp op,
int x,
int y)