Java图片加水印
分为文字水印和透明图片水印
package com.qms.report.util;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageWatermark {
/**
* @param waterMarkType 1时代表水印是文本,2代表水印是透明图片
*/
private void imageWatermark(int waterMarkType) {
// 原始图片路径
String imagePath = "/Users/jaki/Desktop/BSQ/QMS/QMS/qms-qc-report/src/main/java/com/qms/report/util/images.jpg";
// 书印文字
String watermarkText = "Your Watermark";
// 书印透明图片地址
String watermarkImagePath = "path_to_watermark_image.png";
// 输出路径
String outputImagePath = "/Users/jaki/Desktop/BSQ/QMS/QMS/qms-qc-report/src/main/java/com/qms/report/util/imagesRemark.jpg";
try {
// 原始图片
BufferedImage originalImage = ImageIO.read(new File(imagePath));
// 副本(水印)图片
BufferedImage watermarkedImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_RGB);
// 获取图形
Graphics2D graphics = (Graphics2D) watermarkedImage.getGraphics();
// 绘制图片
graphics.drawImage(originalImage, 0, 0, null);
graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
if (waterMarkType == 1) {
// 1时代表水印是文本
// 字体
Font font = new Font("Arial", Font.BOLD, 36);
graphics.setFont(font);
graphics.setColor(Color.RED);
// 获取指定字体的规格
FontMetrics fontMetrics = graphics.getFontMetrics(font);
int textwidth = fontMetrics.stringWidth(watermarkText);
int textheight = fontMetrics.getHeight();
int x = (originalImage.getWidth() - textwidth);
int y = (originalImage.getHeight() - textheight);
// 绘制水印
graphics.drawString(watermarkText, x, y);
} else {
// 读取水印图片
BufferedImage watermarkImage = ImageIO.read(new File(watermarkImagePath));
int x = (originalImage.getWidth() - watermarkImage.getWidth());
int y = (originalImage.getHeight() - watermarkImage.getHeight());
graphics.drawImage(watermarkImage, x, y, null);
}
ImageIO.write(watermarkedImage, "jpg", new File(outputImagePath));
graphics.dispose();
System.out.println("添加水印结束!");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤