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

news2024/9/30 17:27:28

上次,记录的《用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白底图片,再使用圆角图片生成器工具处理,视觉上更美观
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1378710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JVM的相关参数和调优】

文章目录 JVM 调优的参数类型一、标配参数二、X参数三、XX参数 JVM 调优的常用参数 JVM 调优的参数类型 一、标配参数 这类此参数在jdk的各个版本之间很少会变化&#xff0c;基本不改变 java -version&#xff0c;查看当前电脑上的jdk的版本信息 java -help&#xff0c;查看…

Typora上传图片失败PicGo

起初我是在Typora中点击一键上传图片&#xff0c;结果如下&#xff0c;报错。可是我找了半天也没错啊。 最后发现原来是一个图片的命名问题&#xff0c;名字太过于复杂&#xff0c;PicGo识别不出&#xff0c;一个图片报错导致其它也上传不了。 我把它复制到其它文件夹之后&…

Jetson_yolov8_解决模型导出.engine遇到的问题、使用gpu版本的torch和torchvision、INT8 FP16量化加快推理

1、前情提要 英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决&#xff08;涉及numpy、scipy、torchvision等&#xff09;以及直观体验使用Yolov8目标检测的过程&#xff08;CLI命令行操作、无需代码&#xff09;-CSDN博客和YOLOv8_测试yolov8n.pt&#xff0c;yolov8m.pt训…

Qt实现复杂列表

Qt实现复杂列表 界面效果layeritemdelegate.hlayeritemdelegate.cpplayertablemodel.hlayertablemodel.cpplayertableview.hlayertableview.cppmainwindow.hmainwindow.cpp 界面效果 layeritemdelegate.h #ifndef LAYERITEMDELEGATE_H #define LAYERITEMDELEGATE_H#include &l…

【python】搭配Miniconda使用VSCode

现在的spyder总是运行出错&#xff0c;启动不了&#xff0c;尝试使用VSCode。 一、在VSCode中使用Miniconda管理的Python环境&#xff0c;可以按照以下步骤进行&#xff1a; a. 确保Miniconda环境已经安装并且正确配置。 b. 打开VSCode&#xff0c;安装Python扩展。 打开VS…

InternLM第3次课作业

部署 参考github教程&#xff1a;https://github.com/InternLM/tutorial/tree/main/langchain 问题1&#xff1a; windows端口映射过程命令 ssh -i C:\\Users\\breat/.ssh/id_rsa.pub -CNg -L 7860:127.0.0.1:7860 rootssh.intern-ai.org.cn -p 3 4145 中&#xff0c;提示找不…

MetaGPT前期准备与快速上手

大家好&#xff0c;MetaGPT 是基于大型语言模型&#xff08;LLMs&#xff09;的多智能体协作框架&#xff0c;GitHub star数量已经达到31.3k。 接下来我们聊一下快速上手 这里写目录标题 一、环境搭建1.python 环境2. MetaGpt 下载 二、MetaGPT配置1.调用 ChatGPT API 服务2.简…

Unity对应SDK和NDK版本的对照表

官网&#xff1a;Unity - Manual: Android environment setup 本人安装的是2022版本长期支持版本2022.3.15f1c1 安装Java的JDK环境就不在这里展开了&#xff0c;就记录下对Android SDK的设置&#xff0c;要与Unity的版本对应&#xff0c;否则会出现很多莫名奇妙的问题。 打开…

电子学会C/C++编程等级考试2020年12月(三级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:完美立方 形如 a^3= b^3 + c^3 + d^3的等式被称为完美立方等式。例如 12^3= 6^3 + 8^3 + 10^3 。 编写一个程序,对任给的正整数 N (N≤100),寻找所有的四元组 (a, b, c, d),使得 a^3= b^3 + c^3 + d^3 ,其中 a,b,c,d均大于 11, …

【Jmeter之get请求传递的值为JSON体实践】

Jmeter之get请求传递的值为JSON体实践 get请求的常见传参方式 1、在URL地址后面拼接&#xff0c;有多个key和value时&#xff0c;用&链接 2、在Parameters里面加上key和value 第一次遇到value的值不是字符串也不是整型&#xff0c;我尝试把json放到value里面&#xff0…

java多线程面试(二)

1.说一下你对java内存模型JVM的理解 java内存模型是一种抽象的模型&#xff0c;被定义出来屏蔽各种硬件和操作系统的访问差异。 JMM定义了线程和主内存之间的抽象关系&#xff1a;线程之间的共享变量存储在主内存 &#xff08;Main Memory&#xff09;中&#xff0c;每个线程…

SQL语句详解二-DDL(数据定义语言)

文章目录 操作数据库创建&#xff1a;Create查询&#xff1a;Retrieve修改&#xff1a;Update删除&#xff1a;Delete使用数据库 操作表常见的几种数据类型创建&#xff1a;Create复制表 查询&#xff1a;Retrieve修改&#xff1a;Update删除&#xff1a;Delete 操作数据库 创…

Spring Cloud配置中心

微服务意味着要将单体应用中的业务拆分成一个个子服务 , 每个服务的粒度相对较小 ,因此系统中会出现大量的服务。 由于每个服务都需要必要的配置信息才能运行 , 所以一套集中式的 , 动态的配置管理设施是必不可少的。 Spring Cloud 提供了 ConfigServer 来解决这个问题 . Sp…

客户端请求服务器的步骤

当我们在浏览器地址栏输入’http://www.xxx.com/api/xxx"时&#xff0c;客户端是如何找到服务器并发送请求的&#xff1f; 1.先找到服务器 a.检测浏览器缓存有没有缓存该域名对应的IP地址&#xff0c;有则通过IP地址取找服务器。 b.检测本地的hosts文件&#xff0c;是否有…

ROS2——launcher

在ROS2中&#xff0c;launcher 文件是通过Python构建的&#xff0c;它们的功能是声明用哪些选项或参数来执行哪些程序&#xff0c;可以通过 launcher 文件快速同时启动多个节点。一个 launcher 文件内可以引用另一个 launcher 文件。 使用 launcher 文件 ros2 launch 可以代替…

STM32 SPI通信协议3——读取MAX6675温度传感器

在上两章中&#xff0c;我们已经配置了相应的GPIO和SPI功能。这里说一下MAX6675如何读取温度。 从MAX6675手册中我们可以看到&#xff0c;当0的时候SCK启动&#xff0c;数据线开始发送信息&#xff0c;此时可以读取数据&#xff0c;当数据读完后&#xff0c;再拉高电平停止发送…

VMware Workstation17安装教程及安装Ubuntu22.04系统

编程如画&#xff0c;我是panda&#xff01; 前言 VMware Workstation Pro 是一款高级虚拟化软件&#xff0c;使用户能够在单一计算机上同时运行多个操作系统&#xff0c;如Windows、Linux和macOS&#xff0c;而无需重新启动。具备虚拟机快照、高级网络配置、克隆和复制功能&a…

Redis-浅谈redis.conf配置文件

Redis.conf Redis.conf是Redis的配置文件&#xff0c;它包含了一系列用于配置Redis服务器行为和功能的选项。 以下是Redis.conf中常见的一些选项配置&#xff1a; bind: 指定Redis服务器监听的IP地址&#xff0c;默认为127.0.0.1&#xff0c;表示只能本地访问&#xff0c;可以…

大数据毕业设计:房屋数据分析可视化系统 预测算法 可视化 商品房数据 Flask框架(源码+讲解视频)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

网卡高级设置-提高网络环境

网卡高级设置&#xff0c;提高网络质量排除一些连接问题 一、有线网卡 1、关闭IPv6&#xff1b; 可以关闭协议版本6&#xff0c;因为它会引起一些网络连接问题&#xff0c;而且现在几乎用不到IP6。 2、关闭节约电源模式&#xff1b; 右击计算机->设备->设备管理器-&…