php怎么生成二维码_使用第三方库生成二维码的教程【教程】

14次阅读

推荐使用 bacon/bacon-qr-code 库生成二维码,支持 PNG/svg 格式、可调容错等级与尺寸,需启用 GD 扩展(PNG)并确保输入为 UTF-8 编码

php怎么生成二维码_使用第三方库生成二维码的教程【教程】

php 生成二维码不需要自己实现算法,用现成的库最稳妥。推荐 bacon/bacon-qr-code(官方维护、无依赖、支持 PHP 7.4+),它比老旧的 phpqrcode 更安全、更易维护。

安装 bacon/bacon-qr-code 库

composer 安装是最标准的方式,避免手动引入和 autoloader 冲突:

  • 确保项目根目录有 composer.json,且已配置好 Composer 环境
  • 运行命令:
    composer require bacon/bacon-qr-code
  • 如果报错 ext-gd not found,说明 GD 扩展未启用 —— 需在 php.ini 中取消 ;extension=gd 的注释,并重启 Web 服务(如 apache/nginx + PHP-FPM)

生成 PNG 格式二维码(最常用场景)

直接输出 PNG 图片流适合前端 php怎么生成二维码_使用第三方库生成二维码的教程【教程】 这类动态调用:

writeString('https://example.com'); ?>
  • RendererStyle(300) 控制宽高;传第二个参数可设 margin(如 new RendererStyle(300, 10)
  • 不加 header() 直接 echo 会导致乱码或下载失败
  • 若需保存文件,把 echo $writer->writeString(...) 换成 file_put_contents('qrcode.png', $writer->writeString(...))

生成 SVG 格式二维码(适合响应式页面)

SVG 无损缩放,嵌入 html 更灵活,且不依赖 GD 扩展:

writeString('Hello World'); ?>
  • Svg 渲染器不依赖 GD,适合容器化部署或 GD 被禁用的环境
  • 生成的 SVG 是纯文本,可直接内联到 HTML 中(去掉 header,用 echo 插入

  • 注意:部分旧版 IE 不支持 inline SVG,生产环境需确认兼容范围
  • 常见错误与绕过技巧

    实际集成时容易卡在这几个点上:

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

    • 报错 class 'BaconQrCodeWriter' not found:没执行 composer install 或自动加载失效,运行 composer dump-autoload
    • 中文内容乱码/无法识别:QR 码本身不处理编码,必须保证输入字符串是 UTF-8。例如从数据库读取后做 mb_convert_encoding($str, 'UTF-8', 'GBK')
    • 二维码内容超长导致扫描失败:默认容错等级是 L(约 7% 恢复能力)。可提升为 M(15%)、Q(25%)或 H(30%),用 new RendererStyle(300, 0, NULL, null, null, BaconQrCodeEncoderErrorCorrectionLevel::M())
    • 想加 logo?这个库原生不支持。得先生成二维码 PNG,再用 GD 函数(imagecopyresized)叠加图片 —— 注意别遮挡定位图案(三个角上的方块)

    真正麻烦的不是生成,而是控制容错率、适配不同扫码环境、以及处理非 ASCII 字符的编码一致性。这些细节不验证到真机扫码,很容易上线后才发现扫不出。

text=ZqhQzanResources