java圖片添加浮水印執行個體代碼分享_java

來源:互聯網
上載者:User

本文為大家介紹了java圖片添加浮水印執行個體代碼,java實現浮水印還是非常方便的,浮水印可以是圖片或者文字,具體內容如下

package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream;  import javax.imageio.ImageIO; import javax.swing.ImageIcon;  import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageDecoder; import com.sun.image.codec.jpeg.JPEGImageEncoder;  /**  * 圖片浮水印  * @blog http://sjsky.iteye.com  * @author Michael  */ public class ImageMarkLogoByIcon {   /**   * @param args   */  public static void main(String[] args) {   String srcImgPath = "d:/test/michael/myblog_01.png";   String iconPath = "d:/test/michael/blog_logo.png";   String targerPath = "d:/test/michael/img_mark_icon.jpg";   String targerPath2 = "d:/test/michael/img_mark_icon_rotate.jpg";   // 給圖片添加浮水印   ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath);   // 給圖片添加浮水印,浮水印旋轉-45   ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath2,     -45);   }   /**   * 給圖片添加浮水印   * @param iconPath 浮水印圖片路徑   * @param srcImgPath 源圖片路徑   * @param targerPath 靶心圖表片路徑   */  public static void markImageByIcon(String iconPath, String srcImgPath,    String targerPath) {   markImageByIcon(iconPath, srcImgPath, targerPath, null);  }   /**   * 給圖片添加浮水印、可設定浮水印圖片旋轉角度   * @param iconPath 浮水印圖片路徑   * @param srcImgPath 源圖片路徑   * @param targerPath 靶心圖表片路徑   * @param degree 浮水印圖片旋轉角度   */  public static void markImageByIcon(String iconPath, String srcImgPath,    String targerPath, Integer degree) {   OutputStream os = null;   try {    Image srcImg = ImageIO.read(new File(srcImgPath));     BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),      srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);     // 得到畫筆對象    // Graphics g= buffImg.getGraphics();    Graphics2D g = buffImg.createGraphics();     // 設定對線段的鋸齒狀邊緣處理    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,      RenderingHints.VALUE_INTERPOLATION_BILINEAR);     g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg      .getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);     if (null != degree) {     // 設定浮水印旋轉     g.rotate(Math.toRadians(degree),       (double) buffImg.getWidth() / 2, (double) buffImg         .getHeight() / 2);    }     // 浮水印圖象的路徑 浮水印一般為gif或者png的,這樣可設定透明度    ImageIcon imgIcon = new ImageIcon(iconPath);     // 得到Image對象。    Image img = imgIcon.getImage();     float alpha = 0.5f; // 透明度    g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,      alpha));     // 表示浮水印圖片的位置    g.drawImage(img, 150, 300, null);     g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));     g.dispose();     os = new FileOutputStream(targerPath);     // 產生圖片    ImageIO.write(buffImg, "JPG", os);     System.out.println("圖片完成添加Icon印章。。。。。。");   } catch (Exception e) {    e.printStackTrace();   } finally {    try {     if (null != os)      os.close();    } catch (Exception e) {     e.printStackTrace();    }   }  } } 

再為大家分享一例:

import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder; public final class ImageUtils { public ImageUtils() {  }  /**  * public final static String getPressImgPath() { return ApplicationContext  * .getRealPath("/template/data/util/shuiyin.gif"); }  */  /**  * 把圖片印刷到圖片上  *   * @param pressImg --  *   浮水印檔案  * @param targetImg --  *   目標檔案  * @param x  *   --x座標  * @param y  *   --y座標  */ public final static void pressImage(String pressImg, String targetImg,   int x, int y) {  try {   //目標檔案   File _file = new File(targetImg);   Image src = ImageIO.read(_file);   int wideth = src.getWidth(null);   int height = src.getHeight(null);   BufferedImage image = new BufferedImage(wideth, height,     BufferedImage.TYPE_INT_RGB);   Graphics g = image.createGraphics();   g.drawImage(src, 0, 0, wideth, height, null);    //浮水印檔案   File _filebiao = new File(pressImg);   Image src_biao = ImageIO.read(_filebiao);   int wideth_biao = src_biao.getWidth(null);   int height_biao = src_biao.getHeight(null);   g.drawImage(src_biao, (wideth - wideth_biao) / 2,     (height - height_biao) / 2, wideth_biao, height_biao, null);   //浮水印檔案結束   g.dispose();   FileOutputStream out = new FileOutputStream(targetImg);   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   encoder.encode(image);   out.close();  } catch (Exception e) {   e.printStackTrace();  } }  /**  * 列印文字浮水印圖片  *   * @param pressText  *   --文字  * @param targetImg --  *   靶心圖表片  * @param fontName --  *   字型名  * @param fontStyle --  *   字型樣式  * @param color --  *   字型顏色  * @param fontSize --  *   字型大小  * @param x --  *   位移量  * @param y  */  public static void pressText(String pressText, String targetImg,   String fontName, int fontStyle, int color, int fontSize, int x,   int y) {  try {   File _file = new File(targetImg);   Image src = ImageIO.read(_file);   int wideth = src.getWidth(null);   int height = src.getHeight(null);   BufferedImage image = new BufferedImage(wideth, height,     BufferedImage.TYPE_INT_RGB);   Graphics g = image.createGraphics();   g.drawImage(src, 0, 0, wideth, height, null);       g.setColor(Color.RED);   g.setFont(new Font(fontName, fontStyle, fontSize));    g.drawString(pressText, wideth - fontSize - x, height - fontSize     / 2 - y);   g.dispose();   FileOutputStream out = new FileOutputStream(targetImg);   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   encoder.encode(image);   out.close();  } catch (Exception e) {   System.out.println(e);  } }  public static void main(String[] args) {  pressImage("F:/logo.png",   "F:/123.jpg", 0, 0); }}

希望本文所述對大家用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.