java开发图片水印

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30500113/article/details/74620996

今天学习的是图片水印 记录下来 也许以后会用的到!

package com.summer.waterpic;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
 * java开发图片水印和文字水印
 * @创建者
 * @时间2017年7月6日
 * @版本1.0
 */
public class PicWaterMark {

    /**
     * 打印图片的水印
     * @param markPic 水印文件 路劲
     * @param targetImg 目标文件
     * @param x 水印图片的位置 x坐标
     * @param y 纵坐标
     */
    public static void getWaterMark(String markPic,String targetImg,int x,int y){
        //实例化需要被打水印的图片
        File file = new File(targetImg);
        try {
        //将文件转换成图片的对象   
        Image img = ImageIO.read(file);
        //获取图片的宽度与高度
        int width = img.getWidth(null);
        int height = img.getHeight(null);
        //将图片加载到内存中
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
        //绘制图片
        Graphics g= image.createGraphics();
        //绘制指定图像 缩放到指定矩形区域 这里需要从0 0 坐标开始
        g.drawImage(img, 0, 0, width, height, null);


        //读取水印图片
        File fileMark = new File(markPic);
        //将文件转换成图片的对象   
        Image mImg = ImageIO.read(fileMark);
        //水印图片的宽高
        int mwidth = mImg.getWidth(null);
        int mheight = mImg.getHeight(null);
        //绘制指定图像 缩放到指定矩形区域
        g.drawImage(mImg, x, y, mwidth, mheight, null);
        //结束对文件对象的处理
        g.dispose();
        //获取文件路劲
        String pathName = file.getParentFile().getAbsolutePath();
        //给文件命名
        String fileName = pathName + "/" +new Date().getTime() +".jpg";
        System.out.println(fileName);
        //输出打印好水印的文件
        FileOutputStream fos = new FileOutputStream(fileName);
        //JPEGCodec 用来创建一个和指定输出流关联
        JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(fos);
        encoder.encode(image);
        //关闭流
        fos.close();
        System.out.println("水印打印成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {

        String markPic= "C:\\Users\\Administrator\\Desktop\\array\\time\\6.jpg";
        String targetImg = "C:\\Users\\Administrator\\Desktop\\array\\time\\1.jpg";
        getWaterMark(markPic,targetImg,200,200);
    }

}

猜你喜欢

转载自blog.csdn.net/qq_30500113/article/details/74620996