前言

问题描述

将一个给定的图片 添加一个水印在指定的位置

思路

思路 : 使用swing的 Image, Graphics相关api完成, 详见代码
如果要实现旋转, 或者其他功能, 应该也有相关的api可以直接 或者间接的完成

如果对这个比较感兴趣, 可以看看参考的连接, 我这个也是仿照着该功能实现的, 不过比该代码草率一些

参考代码

/**
 * file name : Test11AddWatermark.java
 * created at : 4:19:06 PM Nov 23, 2015
 * created by 
 */

package com.hx.test08;

public class Test11AddWatermark {

    // 为图片添加水印
    public static void main(String []args) throws Exception {

        String srcPath = Tools.getTmpPath(233, Tools.JPG);
        String waterMarkPath = Tools.getTmpPath(234, Tools.PNG);
        String targetPath = Tools.getTmpPath(235, Tools.PNG);
        Rectangle rect = new Rectangle(200, 100, 400, 400);

        addWaterMark(srcPath, waterMarkPath, targetPath, rect);

    }

    // 为给定的图片添加水印
    private static void addWaterMark(String srcImgPath, String waterMarkPath, String targetPath, Rectangle rect) throws Exception {
        BufferedImage srcImg = ImageIO.read(new File(srcImgPath) );
        BufferedImage waterMarkImg = ImageIO.read(new File(waterMarkPath) );

        Graphics g = srcImg.getGraphics();
        g.drawImage(waterMarkImg, rect.x, rect.y, rect.width, rect.height, null);

        ImageIO.write(srcImg, Tools.getFileName(srcImgPath, '.'), new File(targetPath) );
        new PaintImageFrame("addWaterMark", srcImg);
        Log.log("add water mark success !");
    }

}

PaintImageFrame 的代码这里就不贴出来了, 不过是为了展示一下图片而已

效果截图

12 添加水印_swing

总结

当然 这种功能完全可以通过ps, 美图等等其他可视化工具实现
这个不过是瞎扯淡, 写着玩..

参考 :

注 : 因为作者的水平有限,必然可能出现一些bug, 所以请大家指出!