获取小程序码

请求地址

  1. POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

image.png
注意: 图片最小分辨率:280 最大:1280

image.png

可引用此maven,对小程序进行了整合

<!--   微信小程序     -->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>wx-java-miniapp-spring-boot-starter</artifactId>
            <version>3.7.0</version>
        </dependency>

生成二维码


 // 设置小程序二维码线条颜色为黑色
 WxMaCodeLineColor lineColor = new WxMaCodeLineColor("0", "0", "0");
 //生成二维码
 File wxFile = wxMaService.getQrcodeService().createWxaCodeUnlimit(scene, path, 280, false, lineColor, false);

scene:参数 (String scene = “userInfoId=111”)
path:跳转路径
280:二维码宽度

二维码与背景图整合

public class GenerateImageUtil {
    private GenerateImageUtil() {
    }

    /** 
     * 
     * @author X-MD
     * @date 2021/4/5 0005
     * @param  url 背景图链接
     * @param  wxCodeFile 二维码文件
     * @param  qiniu 七牛云配置信息
     * @return
     **/
    public static String generateImage(String url, File wxCodeFile, NacosConfig.Qiniu qiniu) {
        try {
            //背景图片
            BufferedImage bg = ImageIO.read(new URL(url));
            //背景图片的高
            int height = bg.getHeight();
            //背景图片的宽
            int width = bg.getWidth();
            //读取二维码图片
            BufferedImage qcCode = ImageIO.read(wxCodeFile);
            //创建画布
            BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            //生成画笔 开启画图
            Graphics g = img.getGraphics();
            // 绘制背景图片
            g.drawImage(bg.getScaledInstance(width, height, Image.SCALE_DEFAULT), 0, 0, null);
            //绘制二维码图片  width 160 ,  height 160
            Image scaledInstance = qcCode.getScaledInstance(160, 160, Image.SCALE_DEFAULT);
            //二维码插入位置,从左到右 560像素 ,从上到下 1100像素
            g.drawImage(scaledInstance, 560, 1100, null);
            //关掉画笔
            g.dispose();
            // 输出图片
            ByteArrayOutputStream bs = new ByteArrayOutputStream();
            //文件输出格式 png
            ImageIO.write(img, "png", bs);
            InputStream is = new ByteArrayInputStream(bs.toByteArray());
            return uploadPhoto(is,qiniu);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     *  文件上传到七牛云
     * @author X-MD
     * @date 2021/4/5 0005
     * @param
     * @return
     **/
    private static String uploadPhoto(InputStream inputStream,NacosConfig.Qiniu qiniu) {
        Configuration cfg = new Configuration(Region.region0());
        UploadManager uploadManager = new UploadManager(cfg);
        String bucket = "bmlg_img";
        Auth auth = Auth.create(qiniu.getAccesskey(), qiniu.getSecretkey());
        String token = auth.uploadToken(bucket);
        String key = IdUtil.simpleUUID();
        try {
            Response response = uploadManager.put(inputStream, key, token, null, null);
            //解析上传成功的结果
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
            return "https://image.baimofriend.com/" + putRet.key;
        } catch (QiniuException ex) {
            ex.printStackTrace();
        }
        return null;
    }