2020-08-17

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

这是我自己百度琢磨出来的,有问题可以一起交流一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值