如果有時需要把文字加到圖片裡,像是加入亂數碼、流水號等,要怎麼做呢?
方法很簡單,只需要先把input 檔案打開,再取得其畫筆,在我們要寫入文字的x y座標上,利用drawString把文字印上去就可以了。
首先我們先找一張圖,如果找不到的人可以利用以下這張圖,然後會在(150,113)印上"土地公"三個大字,顏色是紅色的、標楷體size 24。

結果如下:

原始碼:
package tool;
public class Image {
/**
*
* @param filesrc 檔案來源
* @param str 圖上的字
* @param outsrc 輸出檔案
* @param x位置
* @param y位置
*/
public void composeStr(String filesrc, String str, String outsrc, int x,
int y, java.awt.Font font, java.awt.Color color) {
try {
java.io.File bgfile = new java.io.File(filesrc);
java.awt.Image bg_src = javax.imageio.ImageIO.read(bgfile);
int bg_width = bg_src.getWidth(null);
int bg_height = bg_src.getHeight(null);
java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(
bg_width, bg_height,
java.awt.image.BufferedImage.TYPE_INT_RGB);
java.awt.Graphics2D g2d = tag.createGraphics();
g2d.drawImage(bg_src, 0, 0, bg_width, bg_height, null);
g2d.setComposite(java.awt.AlphaComposite.getInstance(
java.awt.AlphaComposite.SRC_ATOP, 1.0f)); // 透明度設置開始,1.0是不透明,0是全透
if (color != null)
g2d.setColor(color);
if (font != null)
g2d.setFont(font);
g2d.drawString(str, x, y);
g2d.setComposite(java.awt.AlphaComposite
.getInstance(java.awt.AlphaComposite.SRC_OVER)); // 透明度設置結束
java.io.FileOutputStream out = new java.io.FileOutputStream(outsrc);
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec
.createJPEGEncoder(out);
encoder.encode(tag);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
Image image = new Image();
image.composeStr("d:/1.jpg","土地公廟","d:/out.jpg",150,113,new java.awt.Font("標楷體",java.awt.Font.PLAIN,24),new java.awt.Color(255,0,0));
}
}