【给图片添加水印水印】

import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class TransparentWatermark {
    public static void main(String[] args) {
        // 读取原图片
        BufferedImage image = null;
        try {
            image = ImageIO.read(new File("original.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 获取图片的宽度和高度
        int width = image.getWidth();
        int height = image.getHeight();
        // 创建一个图片缓存对象
        BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        // 获取图片的画笔
        Graphics2D g = newImage.createGraphics();
        // 将原图片绘制到缓存图片上
        g.drawImage(image, 0, 0, width, height, null);
        // 字体大小
        int size = 20;
        // 设置水印的字体样式
        g.setFont(new Font("微软雅黑", Font.BOLD, size));
        // 设置水印的颜色
        g.setColor(Color.red);
        // 旋转30度
        g.rotate(Math.toRadians(30), width / 2, height / 2);
        // 设置水印图片的透明度
        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.3f));
        // x轴间距 应该改为动态计算字符串宽度
        int xHeight = 160;
        // y轴间距
        int yHeight = 80;
        // 设置水印的位置
        for (int i = 0; i < width / xHeight + 1; i++) {
            for (int j = 0; j < height / yHeight + 1; j++) {
                g.drawString("Hello World!", i * xHeight, j * yHeight + size);
            }
        }
        // 释放图形上下文使用的系统资源
        g.dispose();
        // 保存带水印的图片
        try {
            ImageIO.write(newImage, "jpg", new File("watermarked-full.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

你可能感兴趣的:(java,开发语言)