文章目录
添加依赖
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
java代码demo
package com.zkj.report.controller;
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 WatermarkExample {
public static void addWatermark(String inputImagePath) {
try {
File inputFile = new File(inputImagePath);
long totalSpace = inputFile.getTotalSpace();
System.out.println(totalSpace);
BufferedImage srcImg = ImageIO.read(inputFile);
//获取图片的宽
int srcImgWidth = srcImg.getWidth(null);
//获取图片的高
int srcImgHeight = srcImg.getHeight(null);
System.out.println("图片的宽:"+srcImgWidth);
System.out.println("图片的高:"+srcImgHeight);
//创建一个URL对象,获取网络图片的地址信息(网络图片)
// URL url = new URL("https://pngimg.com/distr/img/ukraine.png");
// //将URL对象输入流转化为图片对象 (url.openStream()方法,获得一个输入流)
// Image srcImg = ImageIO.read(url.openStream());
// //获取图片的宽
// int srcImgWidth = srcImg.getWidth(null);
// //获取图片的高
// int srcImgHeight = srcImg.getHeight(null);
// System.out.println("图片的宽:"+srcImgWidth);
// System.out.println("图片的高:"+srcImgHeight);
BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
// 加水印
//创建画笔
Graphics2D g = bufImg.createGraphics();
//绘制原始图片
g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
//-------------------------文字水印 start----------------------------
// //根据图片的背景设置水印颜色
// g.setColor(new Color(255,255,255,128));
// //设置字体 画笔字体样式为微软雅黑,加粗,文字大小为60pt
// g.setFont(new Font("微软雅黑", Font.BOLD, 60));
// String waterMarkContent="图片来源:https://image.baidu.com/";
// //设置水印的坐标(为原图片中间位置)
// int x=(srcImgWidth - getWatermarkLength(waterMarkContent, g)) / 2;
// int y=srcImgHeight / 2;
// //画出水印 第一个参数是水印内容,第二个参数是x轴坐标,第三个参数是y轴坐标
// g.drawString(waterMarkContent, x, y);
// g.dispose();
//-------------------------文字水印 end----------------------------
//-------------------------图片水印 start----------------------------
// 水印文件
String waterMarkImage="/Users/candy/Desktop/11.png";
Image srcWaterMark = ImageIO.read(new File(waterMarkImage));
//获取水印图片的宽度
int widthWaterMark= srcWaterMark.getWidth(null);
//获取水印图片的高度
int heightWaterMark = srcWaterMark.getHeight(null);
//设置 alpha 透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
//绘制水印图片 坐标为中间位置
g.drawImage(srcWaterMark, (srcImgWidth - widthWaterMark) / 2,
(srcImgHeight - heightWaterMark) / 2, widthWaterMark, heightWaterMark, null);
// 水印文件结束
g.dispose();
//-------------------------图片水印 end----------------------------
//待存储的地址
String tarImgPath="/Users/candy/Desktop/jianxin.jpeg";
// 输出图片
FileOutputStream outImgStream = new FileOutputStream(tarImgPath);
ImageIO.write(bufImg, "png", outImgStream);
System.out.println("添加水印完成");
outImgStream.flush();
outImgStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String inputImagePath = "/Users/candy/Desktop/WechatIMG83.jpeg";
addWatermark(inputImagePath);
}
}