php实现微信小程序生成海报

2019年06月05日 215 次阅读 4 条评论 2 人点赞

提到微信小程序生成海报,99%的人都会想到这个小程序端来实现最简单不过了,但是最近就遇到了一个比较SB的外包公司,在讨论群里讨论问题的时候,一个前端开发竟然直接提出海报让后端生成一张图片返回给前端,看到这段话,我就感觉这都是做技术的,差别就这么大麽;

都是做技术的,有些功能前端做、后端做都可以,但是如此推辞,我还真是头一次听到,如果你说你不会写或者你说你太忙,说一句“大神,要不你来写这块代码吧,我这边有点写不出来... ...”,或许听到这句话我心里会好很多。其实在讨论这些问题之前已经跟这家外包公司因为有些问题争执了几次了,总感觉合格的外包公司跟不成气候的外包公司差距是真TM大。也不知道这家公司实力咋样,反正我是感觉可差劲。。。废话不说,既然前端甩锅推辞,咱也不能说这本来就不是我应该负责的,换句话说,本来就是你前端的工作,你不写甩锅给后端,客户也没把经费扣除一些分给我呀!!!真TM郁闷,碰见这种SB前端,无语~~~~,之后想了想算了,为了朋友这个项目,我这边写就写了。由于之前处理这块业务基本都是前端处理的,所以后端还真没写过小程序生成海报,但经过谷歌和百度搜索之后发现,微信小程序生成海报的代码真的很少,可以说基本没有,那我这里就把我用了2小时时间写的PHP合并微信小程序海报的代码分享出来给大家,用的好请打赏!!!

先分享生成微信小程序二维码的代码

public static function createWxQrcode($params)
    {
        //配置APPID、APPSECRET
        $APPID = "";
        $APPSECRET = "";
        //获取access_token
        $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET";

        //缓存access_token
        session_start();
        $_SESSION['access_token'] = "";
        $_SESSION['expires_in'] = 0;

        if (!isset($_SESSION['access_token']) || (isset($_SESSION['expires_in']) && time() > $_SESSION['expires_in'])) {

            $json = httpRequest($access_token, 'POST');
            $json = json_decode($json, true);
            // var_dump($json);
            $_SESSION['access_token'] = $json['access_token'];
            $_SESSION['expires_in'] = time() + 7200;
            $ACCESS_TOKEN = $json["access_token"];
        } else {

            $ACCESS_TOKEN = $_SESSION["access_token"];
        }

        //构建请求二维码参数
        //path是扫描二维码跳转的小程序路径,可以带参数?id=xxx
        //width是二维码宽度
        $qcode = "https://api.weixin.qq.com/wxa/getwxacode?access_token=$ACCESS_TOKEN";
        $param = json_encode(array("path" => "pages/routeDetail/index?id={$params['line_id']}&recom_uid={$params['user_id']}", "width" => 100));

        //POST参数
        $result = httpRequest($qcode, "POST", $param);
        $filename = ROOT_PATH . 'public/uploads/qrcode/' . $params['line_id'] . '_' . $params['user_id'] . '_qrcode_wx.png';
        //生成二维码
        file_put_contents($filename, $result);
        $image = '/uploads/qrcode/' . $params['line_id'] . '_' . $params['user_id'] . '_qrcode_wx.png';
        $base64_image = "data:image/jpeg;base64," . base64_encode($result);
        #echo $base64_image;
        return $image;
    }

PHP合并图片生成海报的代码

有些参数的代码已经删减,请跟进自己情况进行处理替换即可

public static function createMiniWechat($params)
    {
        $config = array(
            'image' => array(
                array(
                    'url' => ROOT_PATH . 'public' . DS . $params['wx_image'],     //二维码地址
                    'is_yuan' => true,          //true图片圆形处理
                    'stream' => 0,
                    'left' => 280,               //小于0为小平居中
                    'top' => 400,
                    'right' => 0,
                    'width' => 100,             //图像宽
                    'height' => 100,            //图像高
                    'opacity' => 100            //透明度
                ),
                array(
                    'url' => $image_arr[0],     //素材地址
                    'is_yuan' => false,          //true图片圆形处理
                    'stream' => 0,
                    'left' => 0,               //小于0为小平居中
                    'top' => 10,
                    'right' => 0,
                    'width' => 400,             //图像宽
                    'height' => 250,            //图像高
                    'opacity' => 100            //透明度
                ),
            ),
            'text' => array(
                array(
                    'text' => $lineInfo->title,            //文字内容
                    'left' => 10,                              //小于0为小平居中
                    'top' => 290,
                    'fontSize' => 14,                         //字号
                    'fontColor' => '0,0,0',                //字体颜色
                    'angle' => 0,
                    'fontPath' => ROOT_PATH . 'public/assets/fonts/fzltxh.ttf',     //字体文件
                ),
                array(
                    'text' => $date,            //文字内容
                    'left' => 10,                              //小于0为小平居中
                    'top' => 340,
                    'fontSize' => 12,                         //字号
                    'fontColor' => '169,169,169',                //字体颜色
                    'angle' => 0,
                    'fontPath' => ROOT_PATH . 'public/assets/fonts/fzltxh.ttf',     //字体文件
                ),
                array(
                    'text' => '¥' . $price,            //文字内容
                    'left' => 10,                              //小于0为小平居中
                    'top' => 365,
                    'fontSize' => 14,                         //字号
                    'fontColor' => '255,20,147',                //字体颜色
                    'angle' => 0,
                    'fontPath' => ROOT_PATH . 'public/assets/fonts/fzltxh.ttf',     //字体文件
                ),
                array(
                    'text' => '长按识别小程序码访问',            //文字内容
                    'left' => 10,                              //小于0为小平居中
                    'top' => 435,
                    'fontSize' => 14,                         //字号
                    'fontColor' => '0,0,0',                //字体颜色
                    'angle' => 0,
                    'fontPath' => ROOT_PATH . 'public/assets/fonts/fzltxh.ttf',     //字体文件
                ),
                array(
                    'text' => '全新体验',            //文字内容
                    'left' => 10,                              //小于0为小平居中
                    'top' => 470,
                    'fontSize' => 13,                         //字号
                    'fontColor' => '169,169,169',                //字体颜色
                    'angle' => 0,
                    'fontPath' => ROOT_PATH . 'public/assets/fonts/fzltxh.ttf',     //字体文件
                )
            ),
            'background' => ROOT_PATH . 'public/assets/img/bj.jpg',          //背景图
        );
        $filename = ROOT_PATH . 'public/uploads/qrcode/' . $params['line_id'] . '_' . $params['user_id'] . '_qrcode.png';
        //echo createPoster($config);
        //$filename为空是真接浏览器显示图片
        $rest = createPoster1($config, $filename);
        if ($rest) {
            $image = '/uploads/qrcode/' . $params['line_id'] . '_' . $params['user_id'] . '_qrcode.png';
            db('qrcode_record')->insert(['user_id' => $params['user_id'], 'line_id' => $params['line_id'], 'image' => $image, 'create_time' => time()]);
            return $image;
        }
        return false;
    }

效果图:


讲梦想、讲奋斗可以,前提是钱要给够。

文章评论(4

  • 毒药Lv 1

    只能说这个前端是个菜鸡,本来就属于它的代码刷锅给你,博主够厉害了,还真去写这部分代码,客户给的钱多麽?

    #12019-06-10 16:06
    • 阳阳博主

      @毒药跟钱没太大关系,这个客户合作了挺久了,算是帮一下客户吧

      2019-06-10 16:07
    • 毒药Lv 1

      @阳阳要是我,直接甩回去,自己的事情自己做!

      2019-06-10 16:40
    • 阳阳博主

      @毒药每个人的解决方式不同,这件事已经过去了,不聊这个,继续忙工作了哈~~

      2019-06-10 16:54
  • 接收回复邮件通知
    非注册会员初次评论需要审核,审核时间(09:00-18:00),请耐心等待...