用Java实现给图片添加文字水印

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.****.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                     

程序背景

在网络中的很多地方都有水印的存在,比如微信公众号上面的图片,微博,以及这个****博客上面的图片……所以突发奇想,看看自己能否写一个可以给图片添加水印的工具类。

程序代码

package image;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;/** * @author 白芷 * @Date 2017/03/12 * @use 利用Java代码给图片加水印 */public class WaterMarkUtils {    /**     * @param srcImgPath 源图片路径     * @param tarImgPath 保存的图片路径     * @param waterMarkContent 水印内容     * @param markContentColor 水印颜色     * @param font 水印字体     */    public void addWaterMark(String srcImgPath, String tarImgPath, String waterMarkContent,Color markContentColor,Font font) {        try {            // 读取原图片信息            File srcImgFile = new File(srcImgPath);//得到文件            Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片            int srcImgWidth = srcImg.getWidth(null);//获取图片的宽            int srcImgHeight = srcImg.getHeight(null);//获取图片的高            // 加水印            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);            Graphics2D g = bufImg.createGraphics();            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);            g.setColor(markContentColor); //根据图片的背景设置水印颜色            g.setFont(font);              //设置字体            //设置水印的坐标            int x = srcImgWidth - 2*getWatermarkLength(waterMarkContent, g);              int y = srcImgHeight - 2*getWatermarkLength(waterMarkContent, g);              g.drawString(waterMarkContent, x, y);  //画出水印            g.dispose();              // 输出图片              FileOutputStream outImgStream = new FileOutputStream(tarImgPath);              ImageIO.write(bufImg, "jpg", outImgStream);            System.out.println("添加水印完成");              outImgStream.flush();              outImgStream.close();          } catch (Exception e) {            // TODO: handle exception        }    }    public int getWatermarkLength(String waterMarkContent, Graphics2D g) {          return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());      }      public static void main(String[] args) {        Font font = new Font("微软雅黑", Font.PLAIN, 35);                     //水印字体        String srcImgPath="H:/安静时写写/写写博客/Java实现给图片添加水印/s.jpg"; //源图片地址        String tarImgPath="H:/安静时写写/写写博客/Java实现给图片添加水印/t.jpg"; //待存储的地址        String waterMarkContent="图片来源:http://blog.****.net/zjq_1314520"//水印内容        Color color=new Color(255,255,255,128);                               //水印图片色彩以及透明度        new WaterMarkUtils().addWaterMark(srcImgPath, tarImgPath, color, waterMarkContent,font);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

最后效果

用Java实现给图片添加文字水印

           

给我老师的人工智能教程打call!http://blog.****.net/jiangjunshow

用Java实现给图片添加文字水印
                     

程序背景

在网络中的很多地方都有水印的存在,比如微信公众号上面的图片,微博,以及这个****博客上面的图片……所以突发奇想,看看自己能否写一个可以给图片添加水印的工具类。

程序代码

package image;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;/** * @author 白芷 * @Date 2017/03/12 * @use 利用Java代码给图片加水印 */public class WaterMarkUtils {    /**     * @param srcImgPath 源图片路径     * @param tarImgPath 保存的图片路径     * @param waterMarkContent 水印内容     * @param markContentColor 水印颜色     * @param font 水印字体     */    public void addWaterMark(String srcImgPath, String tarImgPath, String waterMarkContent,Color markContentColor,Font font) {        try {            // 读取原图片信息            File srcImgFile = new File(srcImgPath);//得到文件            Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片            int srcImgWidth = srcImg.getWidth(null);//获取图片的宽            int srcImgHeight = srcImg.getHeight(null);//获取图片的高            // 加水印            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);            Graphics2D g = bufImg.createGraphics();            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);            g.setColor(markContentColor); //根据图片的背景设置水印颜色            g.setFont(font);              //设置字体            //设置水印的坐标            int x = srcImgWidth - 2*getWatermarkLength(waterMarkContent, g);              int y = srcImgHeight - 2*getWatermarkLength(waterMarkContent, g);              g.drawString(waterMarkContent, x, y);  //画出水印            g.dispose();              // 输出图片              FileOutputStream outImgStream = new FileOutputStream(tarImgPath);              ImageIO.write(bufImg, "jpg", outImgStream);            System.out.println("添加水印完成");              outImgStream.flush();              outImgStream.close();          } catch (Exception e) {            // TODO: handle exception        }    }    public int getWatermarkLength(String waterMarkContent, Graphics2D g) {          return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());      }      public static void main(String[] args) {        Font font = new Font("微软雅黑", Font.PLAIN, 35);                     //水印字体        String srcImgPath="H:/安静时写写/写写博客/Java实现给图片添加水印/s.jpg"; //源图片地址        String tarImgPath="H:/安静时写写/写写博客/Java实现给图片添加水印/t.jpg"; //待存储的地址        String waterMarkContent="图片来源:http://blog.****.net/zjq_1314520"//水印内容        Color color=new Color(255,255,255,128);                               //水印图片色彩以及透明度        new WaterMarkUtils().addWaterMark(srcImgPath, tarImgPath, color, waterMarkContent,font);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

最后效果

用Java实现给图片添加文字水印