將文字加入圖片裡

如果有時需要把文字加到圖片裡,像是加入亂數碼、流水號等,要怎麼做呢?

方法很簡單,只需要先把input 檔案打開,再取得其畫筆,在我們要寫入文字的x y座標上,利用drawString把文字印上去就可以了。

首先我們先找一張圖,如果找不到的人可以利用以下這張圖,然後會在(150,113)印上"土地公"三個大字,顏色是紅色的、標楷體size 24。

1.jpg

結果如下:

out.jpg

原始碼:

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));
  }
}

發表迴響