两张图片加水印
public class ImageWatermarkService {
/**
* imgFile 图像文件
* imageFileName 图像文件名
* uploadPath 服务器上上传文件的相对路径
* realUploadPath 服务器上上传文件的物理路径
* <p>
* ① 创建缓存图片
* ② 创建绘图工具
* ③ 将原图绘制到缓存图片
* ④ 将水印logo绘制到缓存图片
* ⑤ 创建图像编码工具类
* ⑥ 编码缓存图像生成目标图片
*/
public void watermarkAdd(File imgFile, String qcImagePath, String qcPath) {
OutputStream os = null;
try {
File checkPath = new File(qcImagePath);
if (!checkPath.isDirectory()) {
checkPath.mkdirs();
}
Image image = ImageIO.read(imgFile);
int width = image.getWidth(null);
int height = image.getHeight(null);
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 创建缓存图片
Graphics2D g = bufferedImage.createGraphics(); // 创建绘图工具
g.drawImage(image, 0, 0, width, height, null); // 将原图绘制到缓存图片
File logo = new File(qcPath); // 读取水印图片
Image imageLogo = ImageIO.read(logo);
//TODO ImageConsts.ALPHA 透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, ImageConsts.ALPHA)); // 设置水印透明度
//TODO ImageConsts.X ImageConsts.Y 水印的X轴 Y轴位置
g.drawImage(imageLogo, ImageConsts.X, ImageConsts.Y, null); // 将水印logo绘制到缓存图片
g.dispose();
os = new FileOutputStream(qcImagePath + imgFile.getName());
// JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os); // 创建图像编码工具类
// en.encode(bufferedImage); // 编码缓存图像生成目标图片
ImageIO.write(bufferedImage, "jpeg", os);
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}