java重叠图片:
在下面的图片要比在上的的大,不然会被全部覆盖住
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
/**
*
* @param request
* @param response
* @return
*/
public String getBusinessCardByOpentId(HttpServletRequest request, HttpServletResponse response)
{
String saveFilePath = "";//重叠产生新图片的存放路径
String bottom_img= "下面图片的绝对路径";
String top_img = "上面图片的绝对路径";
//重叠后新图片的图片名
String sFileName = RandomUtil.GetRandomString(3) + UtilDate.DateToStr(new Date(), "yyyyMMddHHmmss");
saveFilePath = "路径" + sFileName + ".jpg";
try
{
//根据路径获取图片
BufferedImage bimg = ImageIO.read(new File(bottom_img));
BufferedImage bimg2 = ImageIO.read(new File(top_img));
// 构建叠加层(1.0f代表透明度)
BufferedImage buffImg = overlyingImage(bimg, bimg2, 920, 1480, 1.0 f);
// 上传
int temp = saveFilePath.lastIndexOf(".") + 1;
File outFile = new File(saveFilePath);
if(!outFile.exists())
{
outFile.createNewFile();
}
ImageIO.write(buffImg, saveFilePath.substring(temp), outFile);
}
catch(Exception e)
{
e.printStackTrace();
}
return "成功";
}
/**
*
* @Title: 构造图片
* @Description: 生成水印并返回java.awt.image.BufferedImage
* @param buffImg 源文件(BufferedImage)
* @param waterFile 水印文件(BufferedImage)
* @param x 距离右下角的X偏移量
* @param y 距离右下角的Y偏移量
* @param alpha 透明度, 选择值从0.0~1.0: 完全透明~完全不透明
* @return BufferedImage
* @throws IOException
*/
public static BufferedImage overlyingImage(BufferedImage buffImg, BufferedImage waterImg, int x, int y, float alpha) throws IOException {
// 创建Graphics2D对象,用在底图对象上绘图
Graphics2D g2d = buffImg.createGraphics();
int waterImgWidth = waterImg.getWidth();// 获取层图的宽度
int waterImgHeight = waterImg.getHeight();// 获取层图的高度
// 在图形和图像中实现混合和透明效果
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
// 绘制(x代表向右移动多少px,y代表向下移动多少px)
g2d.drawImage(waterImg, x, y, 630, 630, null);
g2d.dispose();// 释放图形上下文使用的系统资源
return buffImg;
}
这是我自己百度琢磨出来的,有问题可以一起交流一下