封装文字信息并增加文字

    List<ImageDTO> list = new ArrayList<>();    list.add(createImageDTO("测试水印"+ " KG",  //文字内容                        new Color(255, 0, 0, 255),  //色彩及透明度                        new Font("微软雅黑", Font.PLAIN, 24),  //字体                        0.6d,  //横坐标地位                        0.1d   //纵坐标地位    ));    //通过网络url获取图片file    String url = "https://.......";    File srcImgFile = URLToFile(url, fileName);    //调用增加文字    BufferedImage file = setWatermarkTask(srcImgFile, list);

可间接传入xy坐标地位,本文已改为传入百分比并通过图片宽高计算

 /**  * 增加水印  */  private BufferedImage setWatermarkTask(File srcImgFile, List<ImageDTO> list) {        try {            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);            for (ImageDTO imgDTO : list) {                g.setColor(imgDTO.getColor());                                  //依据图片的背景设置水印色彩                g.setFont(imgDTO.getFont());                                    //设置字体                g.drawString(imgDTO.getText(), Math.round(imgDTO.getX() * (double) srcImgWidth), Math.round(imgDTO.getY() * (double) srcImgHeight));   //画出水印            }            g.dispose();            return bufImg;        } catch (Exception e) {            throw new RuntimeException(e);        }    }  /**   * 创立ImageDTO, 每一个对象,代表在该图片中要插入的一段文字内容:   *   * @param text  : 文本内容;   * @param color : 字体色彩(前三位)和透明度(第4位,值越小,越通明);   * @param font  : 字体的款式和字体大小;   * @param x     : 以后字体在该图片地位的横坐标;   * @param y     : 以后字体在该图片地位的纵坐标;   * @return   */  private ImageDTO createImageDTO(String text, Color color, Font font, Double x, Double y) {        ImageDTO imageDTO = new ImageDTO();        imageDTO.setText(text);        imageDTO.setColor(color);        imageDTO.setFont(font);        imageDTO.setX(x);        imageDTO.setY(y);        return imageDTO;    }    /**     * 读取网络中的图片     */    private File URLToFile(String url, String fileName) {        File file1 = new File(fileName);        try {            URL url1 = new URL(url);            FileUtils.copyURLToFile(url1, file1);        } catch (IOException e) {            e.printStackTrace();        }        File absoluteFile = file1.getAbsoluteFile();        return file1;    }

文字详情实体类

    @Data    public class ImageDTO {        //文字内容        private String text;        //字体色彩和透明度        private Color color;        //字体和大小        private Font font;        //所在图片的x坐标百分比        private Double x;        //所在图片的y坐标百分比        private Double y;    }