PHP获取微信小程序码并生成分享海报

以前有一篇文章简单介绍了小程序生成分享海报的过程,使用canvas进行海报的生成,最近又遇到关于后端直接生成分享海报,所以简单介绍下获取微信小程序码+生成分享海报

1、获取accessToken

	
	/**
     * 获取accessToken
     * @return mixed|string
     */
    public function getAccessToken() {

        $appId = '';

        $appSecret = '';

        $data = json_decode(file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appId . "&secret=" . $appSecret), true);

        return $data['access_token'] ?? '';
        
    }
    

2、获取微信小程序码


	/**
     * 获取小程序码
     * @return mixed
     */
    public function getWechatCode() {

        // 获取不受限制的小程序码
        $url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $this->getAccessToken();

        // 传递回传标识的参数,scene的长度限制32位
        $options = [
            'json' => [
                'scene' => "***",
            ]
        ];

        // 进行请求,得到的是图片 Buffer
        $response = (new Client())->post($url, $options);

        return $response->getBody()->getContents();
        
    }

3、使用imagick生成小程序海报


	/**
     * 生成小程序海报
     */
    public function createPoster()
    {

        // 海报背景底图
        $bgUrl = "./poster/bg.png";

        // 海报生成位置
        $posterUrl = "./poster/poster.png";

        // 小程序码生成位置
        $wxCodeUrl = "./poster/wx-code.png";

        // 初始画板
        $imagick = new \Imagick();

        // 设置画板宽高及导出图片格式
        $imagick->newImage(1242, 2208, 'white', 'jpg');

        // 塞入底图
        $imagick->compositeImage(new \Imagick($bgUrl), 40, 0, 0);

        // 获取个人小程序码
        $content = $this->getWechatCode();

        // 生成小程序码
        file_put_contents($wxCodeUrl, $content);

        // 缩放小程序码
        $codeImagick = new \Imagick($wxCodeUrl);

        // 设置尺寸
        $codeImagick->thumbnailImage(200, 200);

        // 设置圆角
        $codeImagick->roundCornersImage(10, 10);

        // 导出
        $codeImagick->writeImage($wxCodeUrl);

        // 创建水印对象
        $draw = new \ImagickDraw();

        // 设置文字大小
        $draw->setFontSize(50);

        // 设置文字字体,注意中文不设置的话不显示
        $draw->setFont("./poster/weiruanyahei.ttf");

        // 设置文字颜色
        $draw->setFillColor('#2254f4');

        // 设置编码
        $draw->setTextEncoding('UTF-8');

        // 设置水印内容
        $draw->annotation(30, 200, "我是水印");

        // 合并导出海报
        $imagick->compositeImage(new \Imagick($wxCodeUrl), 40, 210, 400);

		// 插入文字
        $imagick->drawImage($draw);

        $imagick->writeImage($posterUrl);

        return $posterUrl;

    }

通过canvas和PHP两种方式生成海报,个人感觉还是用PHP生成方便些,微信小程序中canvas开发起来感觉繁琐了一些,可能因为不是专业前端的原因,后端的话其实定制化不高,如果想要实现复杂效果的海报还得使用canvas

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值