版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
}