java开发图片水印

来源:互联网 发布:耳机线材淘宝 编辑:程序博客网 时间:2024/06/07 00:52

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

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);    }}