java向圖片上寫字,兩個圖片合并的方法

來源:互聯網
上載者:User

標籤:

package writeimg;  import javax.imageio.ImageIO;  import java.awt.Color;  import java.awt.Font;  import java.awt.Graphics2D;  import java.awt.image.BufferedImage;  import java.io.File;  import java.io.IOException;  import java.net.URL;      public class pic {        private Font font = new Font("華文彩雲", Font.PLAIN, 40);// 添加字型的屬性設定        private Graphics2D g = null;        private int fontsize = 0;        private int x = 0;        private int y = 0;        /**      * 匯入本地圖片到緩衝區      */      public BufferedImage loadImageLocal(String imgName) {          try {              return ImageIO.read(new File(imgName));          } catch (IOException e) {              System.out.println(e.getMessage());          }          return null;      }        /**      * 匯入網狀圖片到緩衝區      */      public BufferedImage loadImageUrl(String imgName) {          try {              URL url = new URL(imgName);              return ImageIO.read(url);          } catch (IOException e) {              System.out.println(e.getMessage());          }          return null;      }        /**      * 產生新圖片到本地      */      public void writeImageLocal(String newImage, BufferedImage img) {          if (newImage != null && img != null) {              try {                  File outputfile = new File(newImage);                  ImageIO.write(img, "jpg", outputfile);              } catch (IOException e) {                  System.out.println(e.getMessage());              }          }      }        /**      * 設定文字的字型等      */      public void setFont(String fontStyle, int fontSize) {          this.fontsize = fontSize;          this.font = new Font(fontStyle, Font.PLAIN, fontSize);      }        /**      * 修改圖片,返回修改後的圖片緩衝區(只輸出一行文本)      */      public BufferedImage modifyImage(BufferedImage img, Object content, int x,              int y) {            try {              int w = img.getWidth();              int h = img.getHeight();              g = img.createGraphics();              g.setBackground(Color.WHITE);              g.setColor(Color.orange);//設定字型顏色              if (this.font != null)                  g.setFont(this.font);              // 驗證輸出位置的縱座標和橫座標              if (x >= h || y >= w) {                  this.x = h - this.fontsize + 2;                  this.y = w;              } else {                  this.x = x;                  this.y = y;              }              if (content != null) {                  g.drawString(content.toString(), this.x, this.y);              }              g.dispose();          } catch (Exception e) {              System.out.println(e.getMessage());          }            return img;      }        /**      * 修改圖片,返回修改後的圖片緩衝區(輸出多個文本段) xory:true表示將內容在一行中輸出;false表示將內容多行輸出      */      public BufferedImage modifyImage(BufferedImage img, Object[] contentArr,              int x, int y, boolean xory) {          try {              int w = img.getWidth();              int h = img.getHeight();              g = img.createGraphics();              g.setBackground(Color.WHITE);              g.setColor(Color.RED);              if (this.font != null)                  g.setFont(this.font);              // 驗證輸出位置的縱座標和橫座標              if (x >= h || y >= w) {                  this.x = h - this.fontsize + 2;                  this.y = w;              } else {                  this.x = x;                  this.y = y;              }              if (contentArr != null) {                  int arrlen = contentArr.length;                  if (xory) {                      for (int i = 0; i < arrlen; i++) {                          g.drawString(contentArr[i].toString(), this.x, this.y);                          this.x += contentArr[i].toString().length()                                  * this.fontsize / 2 + 5;// 重新計算文本輸出位置                      }                  } else {                      for (int i = 0; i < arrlen; i++) {                          g.drawString(contentArr[i].toString(), this.x, this.y);                          this.y += this.fontsize + 2;// 重新計算文本輸出位置                      }                  }              }              g.dispose();          } catch (Exception e) {              System.out.println(e.getMessage());          }            return img;      }        /**      * 修改圖片,返回修改後的圖片緩衝區(只輸出一行文本)      *       * 時間:2007-10-8      *       * @param img      * @return      */      public BufferedImage modifyImageYe(BufferedImage img) {            try {              int w = img.getWidth();              int h = img.getHeight();              g = img.createGraphics();              g.setBackground(Color.WHITE);              g.setColor(Color.blue);//設定字型顏色              if (this.font != null)                  g.setFont(this.font);              g.drawString("reyo.cn", w - 85, h - 5);              g.dispose();          } catch (Exception e) {              System.out.println(e.getMessage());          }            return img;      }        public BufferedImage modifyImagetogeter(BufferedImage b, BufferedImage d) {            try {              int w = b.getWidth();              int h = b.getHeight();                              g = d.createGraphics();              g.drawImage(b, 100, 10, w, h, null);              g.dispose();          } catch (Exception e) {              System.out.println(e.getMessage());          }            return d;      }        public static void main(String[] args) {            pic tt = new pic();            BufferedImage d = tt.loadImageLocal("D:\\11.jpg");  //      BufferedImage b = tt  //              .loadImageLocal("E:\\檔案(word,excel,pdf,ppt.txt)\\zte-logo.png");           tt.writeImageLocal("D:\\cc.jpg",tt.modifyImage(d,"西昌蘋果",90,90)          //往圖片上寫檔案           );            //tt.writeImageLocal("D:\\cc.jpg", tt.modifyImagetogeter(b, d));          //將多張圖片合在一起          System.out.println("success");      }    } 

  原文:http://www.cnblogs.com/interdrp/archive/2013/03/04/2942559.html

java向圖片上寫字,兩個圖片合并的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.