首页 > 编程 > Java > 正文

java图片添加水印实例代码分享

2019-11-26 14:42:54
字体:
来源:转载
供稿:网友

本文为大家介绍了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语言实现图片添加水印有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表