Java给图片添加水印(图标和文字)

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;

import javax.swing.*;

import com.sun.image.codec.jpeg.*;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
 * @author Administrator
 *
 * TODO 要更改此生成的类型注释的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 *
 * 添加水印,
 * filePath 源图片路径 含图片名,
 * watermark 水印图片路径
 * savePath 为你添加水印后的图片保存路径文件夹
 * words 要添加的文字
 */
//添加水印,filePath 源图片路径, watermark 水印图片路径
public class Mark {

     private static int wid = 0;

     private static int het = 0;

    public static boolean createMark(String filePath,String watermark,String words,String savePath) {


        ImageIcon imgIcon=new ImageIcon(filePath);

        Image theImg =imgIcon.getImage();

        ImageIcon waterIcon=new ImageIcon(watermark);

        Image waterImg =waterIcon.getImage();

        ///
        File f = new File(filePath);

        String picname = f.getName();//取得图片名

        if(watermark!= null&&!watermark.equals("")){//当水印图标为空时

        ImageIcon markIcon = new ImageIcon(watermark); //要添加的水印图标

        Image markImg = markIcon.getImage();

         wid = markImg.getWidth(null); //水印图标宽度

         het = markImg.getHeight(null); //水印图标高度
        }
        //

        int width=theImg.getWidth(null); //源图片宽度

        int height= theImg.getHeight(null); //源图片高度

        if(savePath.equals(""))savePath = filePath;//如果未指定保存路径则保存回原路径

        else savePath = savePath+"//"+picname;//指定保存文件夹时,拼接出保存路径

        BufferedImage bimage = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);

        Graphics2D g=bimage.createGraphics( );

        g.setColor(Color.red); //设置颜色

        g.setBackground(Color.white);

        g.drawImage(theImg, 0, 0, null );

        g.drawImage(waterImg, width-wid+5, height-het+5, null ); //添加图标中间两个数字参数 是设定位置

        g.drawString(words,width-120,height-10); //添加文字


        try{

        FileOutputStream out=new FileOutputStream(savePath);

        JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out);

        JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);

        param.setQuality(50f, true); //图片质量

        encoder.encode(bimage, param);

        out.close();

        }catch(Exception e){

                e.printStackTrace();
                System.out.println("===========水印失败");
                return false;

            }finally{
                System.gc();//清理 垃圾对象
            }

            System.out.println("===========水印成功");
            return true;
          }
    ///测试主程序
        public static void main(String[] args){
            createMark("d:/001.jpg","","www.love.com","d:/aa");

          } 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zp8126

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值