0

0

php怎么生成二维码_php使用QRcode库创建二维码【快捷】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-02-23 19:57:24

|

172人浏览过

|

来源于php中文网

原创

composer安装endroid/qr-code失败主因是php版本不匹配:php 7.4项目需指定^3.9,8.0+可用v4但需适配writerinterface;输出乱码因缺失content-type响应头;中文乱码因字体缺失,v4必须显式传入中文字体;logo叠加需控制尺寸≤20%且背景透明。

php怎么生成二维码_php使用qrcode库创建二维码【快捷】

composer 安装 endroid/qr-code 失败或版本冲突

很多人卡在第一步:执行 composer require endroid/qr-code 报错,常见原因是 PHP 版本不匹配或已存在旧版依赖。这个库 v4 要求 PHP ≥ 8.0,v3 支持 PHP 7.4,但默认安装会拉最新版。

  • PHP 7.4 项目请显式指定版本:composer require endroid/qr-code:^3.9
  • PHP 8.0+ 可用 v4,但注意 v4 移除了 QrCode::render() 直出字符串的方法,改用 WriterInterface
  • 如果项目已有 symfony/http-foundationsymfony/mime,别硬删——v4 依赖它们,强行绕过会导致 Unable to find writer

QrCode::create() 后直接输出乱码或空白页

这是最常被忽略的响应头问题。QR 码本质是图片二进制流,浏览器没收到正确 Content-Type 就当文本渲染,自然乱码。

  • 必须手动设置 header:header('Content-Type: image/png');(PNG 格式下)
  • 确保输出前无任何空格、BOM、echo 或 warning 输出,否则 header 发送失败
  • 调试时加一句 if (headers_sent($file, $line)) { die("Headers already sent in $file:$line"); }
  • v4 中推荐用 PngWriter + ->writeString(),比老版 ->render() 更可控

中文内容生成二维码显示方块或乱码

不是库不支持中文,而是默认字体缺失。v3 默认用 DejaVuSans,v4 默认无字体,全靠你传入 FontBuilder

PHP QR Code
PHP QR Code

PHP QR Code 是一个开源(LGPL)的库,用于生成 QR Code,即二维码。基于 libqrencode C 库,提供了创建 QR Code 条形码图像的 API(PNG、JPEG 依赖于 GD2)。完全使用 PHP 实现。

下载
  • v3:确认 vendor/endroid/qr-code/assets/fonts/DejaVuSans.ttf 存在;若被删,重装或手动补上
  • v4:必须显式加载中文字体,例如:(new FontBuilder(__DIR__.'/simhei.ttf'))->build()
  • 字体文件路径要绝对路径,相对路径在 CLI 和 Web 下行为不一致
  • 避免用 Windows 自带的 simsum.ttc(是 TTC 复合格式),优先选 simhei.ttfNotoSansCJKsc-Regular.otf

生成带 logo 的二维码但边缘模糊或识别率下降

logo 图片叠加不是简单“贴上去”,尺寸、透明度、位置都会影响扫码成功率。

立即学习PHP免费学习笔记(深入)”;

  • logo 宽高建议 ≤ 二维码总宽的 20%,太大直接破坏定位图案(三个角上的大方块)
  • LogoBuilder(v4)或 setLogoPath()(v3)时,确保 logo 是正方形且背景透明(PNG)
  • 不要用 imagecopymerge 手动合成——它会丢 alpha 通道,导致 logo 边缘发灰
  • 生成后务必用多个扫码 App 实测(微信、支付宝、iOS 原生相机),有些算法对中心区域干扰特别敏感
实际用起来,最难调的往往不是代码怎么写,而是字体路径对不对、header 发没发出、logo 切没切好——这些地方一错,二维码就变成“看起来像,扫不出来”的假图。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

85

2025.09.11

composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

159

2023.12.25

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

828

2023.08.22

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

483

2023.11.27

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

483

2023.11.27

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

618

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

217

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1558

2023.10.24

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1127

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.3万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号