当前位置: 代码迷 >> 综合 >> JAVA 给图片添加文字水印
  详细解决方案

JAVA 给图片添加文字水印

热度:37   发布时间:2024-03-06 00:44:46.0

水印操作有很多,例如:给图片添加文字、图片水印,给pdf文件添加水印,给文件加盖公章,这类需求还是时常会遇到的,今天就简单记录一下给图片添加文字水印的demo,仅供大家参考,后续会写别的情况的添加水印的demo,有用到的可以关注一下。

package com.gupaoedu.vip.test;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;public class watermark {/*** 给图片添加水印*/public void addWaterMark() {Color color = new Color(255, 200, 0, 118);   // 水印颜色Font font = new Font("微软雅黑", Font.ITALIC, 45);  //水印字体String waterMarkContent="我爱你 I LOVE YOU";   //水印内容String tarImgPath = "C:\\Users\\yun\\Desktop\\新建文件夹\\timg2.jpg";  //存储目标路径try {File file = new File("C:\\Users\\yun\\Desktop\\新建文件夹\\timg.jpg");  //原图片BufferedImage buImage = ImageIO.read(file);int width = buImage.getWidth(); //图片宽int height = buImage.getHeight(); //图片高//添加水印BufferedImage bufferedImage = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);Graphics2D g = bufferedImage.createGraphics();g.drawImage(buImage, 0, 0, width, height, null);g.setColor(color); //水印颜色g.setFont(font); //水印字体int x = width -2*getWatermarkLength(waterMarkContent, g);  //这是一个计算水印位置的函数,可以根据需求添加int y = height - 1*getWatermarkLength(waterMarkContent, g);g.drawString(waterMarkContent, 400, 300); //水印位置g.dispose(); //释放资源FileOutputStream outImgStream = new FileOutputStream(tarImgPath);ImageIO.write(bufferedImage, "jpg", outImgStream);System.out.println("添加水印完成");outImgStream.flush();outImgStream.close();} catch (Exception e) {e.printStackTrace();}}public int getWatermarkLength(String waterMarkContent, Graphics2D g) {return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());}public static void main(String[] args) {new watermark().addWaterMark();}
}