针对java 进行图片处理 进行两个图片的叠加操作@RequestMapping("returnUrl")
public String ReturnUrl(HttpServletResponse response) throws IOException {
String sourceFilePath = "D://1.png";
String waterFilePath = "D://2.jpg";
// 构建叠加层
BufferedImage buffImg = watermark(new File(sourceFilePath), new File(waterFilePath), 10, 20, 1.0f);
// 输出水印图片
ImageIO.write(buffImg, "jpg", response.getOutputStream());
// generateWaterFile(buffImg, saveFilePath);
return null;
}
/**
*
* @Title: 构造图片
* @Description: 生成水印并返回java.awt.image.BufferedImage
* @param file
* 源文件(图片)
* @param waterFile
* 水印文件(图片)
* @param x
* 距离右下角的X偏移量
* @param y
* 距离右下角的Y偏移量
* @param alpha
* 透明度, 选择值从0.0~1.0: 完全透明~完全不透明
* @return BufferedImage
* @throws IOException
*/
public static BufferedImage watermark(File file, File waterFile, int x, int y, float alpha) throws IOException {
// 获取底图
BufferedImage buffImg = ImageIO.read(file);
// 获取层图
BufferedImage waterImg = ImageIO.read(waterFile);
// 创建Graphics2D对象,用在底图对象上绘图
Graphics2D g2d = buffImg.createGraphics();
int waterImgWidth = waterImg.getWidth();// 获取层图的宽度
int waterImgHeight = waterImg.getHeight();// 获取层图的高度
// 在图形和图像中实现混合和透明效果
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
// 绘制 waterImgWidth waterImgHeight 控制层图的大小
g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null);
g2d.dispose();// 释放图形上下文使用的系统资源
return buffImg;
}