如果有時需要把文字加到圖片裡,像是加入亂數碼、流水號等,要怎麼做呢?
方法很簡單,只需要先把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)); } }