• 图片批量添加水印并放入到指定文件夹下


    package cn.lyc;

    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;

    public class ImageIO1 {
    //文件地址
    static String path = "C:\Users\86176\Desktop\p";
    public static void main(String[] args) throws IOException {
    //调用递归方法
    add(new File(path));
    }

    //声明静态变量 用于拼接重命名
    static int num = 0;
    //路径,用于新文件创建的地方
    static String url = "C:\Users\86176\Desktop\pl\";
    public static void add(File file) throws IOException {
    //如果上面的path是一个目录
    if (file.isDirectory()) {
    //拿到目录中的文件放到File[]中
    File[] files = file.listFiles();
    //遍历目录中的文件
    for (File fs : files) {
    //如果还有目录,就再调用这个方法(递归)
    if (fs.isDirectory()) add(fs);
    //如果是文件并且以.jpg或.png结尾的
    if (fs.isFile() && (fs.getName().endsWith(".jpg")) || fs.getName().endsWith(".png")) {
    //静态变量+1
    ++num;
    //取得文件名
    String name = fs.getName();
    //下面的代码主要是为了给生成的新文件命名
    //截取文件名,从开头截取到.的位置(不包含.)
    String bname = name.substring(0, name.indexOf("."));
    String mname = "test";
    //截取文件名,从.的位置截取到最后(包含.)
    String lname = name.substring(name.lastIndexOf("."));
    //拼接为一个新名字
    String newname = bname + mname + lname;
    //System.out.println(newname);
    //读取文件
    BufferedImage i = ImageIO.read(fs);
    //开启画笔
    Graphics2D g = i.createGraphics();
    //去锯齿,让文字变得光滑
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    //设置字体 宋体 加粗 大小为30
    Font font = new Font("宋体", Font.BOLD, 30);
    //使用这个字体
    g.setFont(font);
    //水印文字的内容
    String src = "版权所有:2647871520";
    //坐标(水印文字加进去的位置)
    int x = 15;
    int y = 30;
    //设置颜色为红色
    g.setColor(Color.RED);
    //把水印文字写到图片中
    g.drawString(src, x, y);
    //关闭画笔
    g.dispose();
    //生成新文件到指定目录,重新命名
    ImageIO.write(i, fs.getName().substring(name.lastIndexOf(".") + 1), new FileOutputStream(url + num + newname));

    }
    }
    }
    ////如果上面的path是一个文件
    else if (file.isFile()) {
    ++num;
    BufferedImage i = ImageIO.read(file);
    Graphics2D g = i.createGraphics();
    String name = file.getName();
    //System.out.println(name);
    String bname = name.substring(0, name.indexOf("."));
    String mname = "test";
    String lname = name.substring(name.lastIndexOf("."));
    String newname = bname + mname + lname;
    //System.out.println(newname);
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    Font font = new Font("宋体", Font.BOLD, 30);
    g.setFont(font);
    String src = "版权所有:2647871520";
    int x = 10;
    int y = 10;
    g.setColor(Color.RED);
    g.drawString(src, x, y);
    g.dispose();
    ImageIO.write(i, "jpg", new FileOutputStream(url + num + newname));
    }
    }
    }
  • 相关阅读:
    MATLAB01
    Diffie-Hellman 密钥交换
    古典密码
    正则表达式
    装饰器初析
    进制转换的栈实现
    Log4j(异常日志)
    2018/6/6
    2018.1.1T19B3-u4
    2018.1.1T19-B3-U3jiangyi
  • 原文地址:https://www.cnblogs.com/liuyunche/p/14314238.html
Copyright © 2020-2023  润新知