微信公众号生成带参数的二维码加上logo

发布时间:2024年01月12日

上次,记录的《用php生成微信公众号带参数的二维码demo
这次,加上logo显得正规一点,起码看起来不像诈骗二维码

接上,上次的公众号二维码(远程二维码地址)
// $wx_code = ‘https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHB8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxL5mNvbS9xLzAyMjJZRWhMdFpiRVAxQ1FCdWhCY0gAAgQ0FJ1lAwSAUQEA’;

// 把二维码图片下载下来
$imageInfo = $this->downloadImage($wx_code);
$imagename="/uploads/wxcode/qrcode".$member_id.".jpg";
$filename= dirname(BASE_UPLOAD_PATH).$imagename;// D:\phpstudy_pro\WWW\xxx\public/uploads/wxcode/qrcode26916.jpg
$local_file=fopen($filename,'w');
if(false !== $local_file){
    if(false !== fwrite($local_file,$imageInfo["body"])){
        fclose($local_file);
    }
}

$logo   = dirname(BASE_UPLOAD_PATH) . '/uploads/wxcode/logo.png';// 需要显示在二维码中的Logo图像
$qrcodelogo = "/uploads/wxcode/qrcodelogo" . $member_id . ".jpg";
 $QRlogo = dirname(BASE_UPLOAD_PATH) . $qrcodelogo;// 合拼后带logo的二维码
 if ($logo !== FALSE) {
     $QR             = imagecreatefromstring(file_get_contents($filename));//目标图象连接资源。
     $logo           = imagecreatefromstring(file_get_contents($logo));    //源图象连接资源。
     $QR_width       = imagesx($QR);                                       //二维码图片宽度
     $QR_height      = imagesy($QR);                                       //二维码图片高度
     $logo_width     = imagesx($logo);                                     //logo图片宽度
     $logo_height    = imagesy($logo);                                     //logo图片高度
     $logo_qr_width  = $QR_width / 4;                                      //组合之后logo的宽度(占二维码的1/5)
     $scale          = $logo_width / $logo_qr_width;                       //logo的宽度缩放比(本身宽度/组合后的宽度)
     $logo_qr_height = $logo_height / $scale;                              //组合之后logo的高度
     $from_width     = ($QR_width - $logo_qr_width) / 2;                   //组合之后logo左上角所在坐标点
     //重新组合图片并调整大小
     imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
     imagepng($QR, $QRlogo);//带Logo二维码的文件名
 }
 // 删除没logo的二维码
 @unlink($filename);

 $wx_code = HTTP_TYPE . $_SERVER['HTTP_HOST'] . $qrcodelogo;// 带logo的二维码
 // echo '<img src="' . $wx_code . '">';
 // die;

HTTP_TYPE是我在thinkPHP框架定义的常量,就是判断网址是否为https

define('HTTP_TYPE',  \think\Request::instance()->isSsl() ? 'https://' : 'http://');#是否为SSL

下载远程图片方法

private function downloadImage($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_NOBODY, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // curl_setopt($ch, CURLOPT_TIMEOUT, 60); //只需要设置一个秒的数量就可以
        $package = curl_exec($ch);
        $httpinfo = curl_getinfo($ch);
        curl_close($ch);
        return array_merge(array('body'=>$package),array('header'=>$httpinfo));
    }

logo上的处理,可以使用jpg白底图片,再使用圆角图片生成器工具处理,视觉上更美观
在这里插入图片描述

文章来源:https://blog.csdn.net/gongqinglin/article/details/135548743
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。