JAVA 实现上传图片添加水印(详细版)
水印的工具类: import javax.imageio.ImageIO;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Rende
水印的工具类:
import javax.imageio.ImageIO;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
/**
* 定义文字加水印
*/
public class ImageWatermarkUtils {
// 水印字体
private static final Font FONT = new Font("微软雅黑", Font.PLAIN, 14);
// 透明度
private static final AlphaComposite COMPOSITE = AlphaComposite
.getInstance(AlphaComposite.SRC_OVER, 0.6f);
// 水印之间的间隔
private static final int X_MOVE = 150;
// 水印之间的间隔
private static final int Y_MOVE = 200;
/**
* 打水印(文字)
*
* @param srcImgPath 源文件地址
* @param font 字体
* @param markContentColor 水印颜色
* @param waterMarkContent 水印内容
* @param outImgPath 输出文件的地址
*/
public static void markWithContent(String srcImgPath, Font font, Color markContentColor,
String waterMarkContent,
String outImgPath) {
FileOutputStream fos = null;
try {
// 读取原图片信息
File srcFile = new File(srcImgPath);
File outFile = new File(outImgPath);
BufferedImage srcImg = ImageIO.read(srcFile);
// 图片宽、高
int imgWidth = srcImg.getWidth();
int imgHeight = srcImg.getHeight();
// 图片缓存
BufferedImage bufImg = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);
// 创建绘图工具
Graphics2D graphics = bufImg.createGraphics();
// 画入原始图像
graphics.drawImage(srcImg, 0, 0, imgWidth, imgHeight, null);
// 设置水印颜色
graphics.setColor(markContentColor);
// 设置水印透明度
graphics.setComposite(COMPOSITE);
// 设置倾斜角度
graphics.rotate(Math.toRadians(-35), (double) bufImg.getWidth() / 2,
(double) bufImg.getHeight() / 2);
// 设置水印字体
graphics.setFont(font);
// 消除java.awt.Font字体的锯齿
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int xCoordinate = -imgWidth / 2, yCoordinate;
// 字体长度
int markW原创不易,完成人机校验,阅读全文