0

0

php怎么生成条形码_php使用barcode库创建条码【识别】

穿越時空

穿越時空

发布时间:2026-02-22 17:59:03

|

722人浏览过

|

来源于php中文网

原创

picqer/php-barcode-generator是php生成标准条形码最稳方案,纯gd即可运行,支持ean13、code128等;generate()返回二进制数据,需设header或写入文件,module width指单条纹宽(非总宽),ean13须严格13位数字,中文不支持编码但可额外添加说明文字。

php怎么生成条形码_php使用barcode库创建条码【识别】

picqer/php-barcode-generator 生成 PNG 条形码最稳

直接上结论:别碰那些封装不全、文档缺失的旧库,picqer/php-barcode-generator 是目前 PHP 里生成标准条形码(如 EAN13CODE128)最靠谱的选择。它不依赖 GD 扩展的冷门函数,也不强制要求 imagick,纯 GD 就能跑。

常见错误是装了 tecnickcom/tcpdf 想顺带画条码——它只在 PDF 内部渲染,导出单图麻烦,还容易因字体缺失报 Could not include font;也有人试 php-barcode(无命名空间老库),PHP 8+ 直接 fatal error。

  • 安装命令:composer require picqer/php-barcode-generator
  • 支持格式:优先用 GeneratorPNGGeneratorSVG 适合需要缩放不失真的场景
  • 注意 generate() 返回的是原始图像二进制数据,不是文件路径——别直接 echo,要加 header('Content-Type: image/png') 或写入文件

generate() 的三个必填参数和一个易错默认值

调用 generate() 时,顺序是内容、类型、宽度、高度。最容易翻车的是把「宽度」理解成「像素总数」——其实它是每个条纹的宽度(module width),单位是像素,典型值是 23;总图像宽度会自动按内容长度推算。

例如生成 EAN13:13 位数字必须严格校验,少一位或多一位都会抛 InvalidArgumentException;而 CODE128 能编码字母数字,但内容含控制字符(如 \x00)会导致空白输出,得提前过滤。

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

PHP QR Code
PHP QR Code

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

下载
  • 内容参数:字符串,不能为 null 或空格串,EAN13 类型下必须是 13 位纯数字
  • 类型参数:用常量 BarcodeGeneratorPNG::TYPE_EAN_13,别手写字符串 'EAN13',否则静默失败
  • 高度参数:指条纹高度(单位 px),不是整个图片高,建议 ≥ 50,太矮扫码枪扫不出
  • 默认背景色是透明,如果贴在有色背景上显示异常,初始化时传第 5 个参数:['bg_color' => [0, 0, 0, 0]] 改成不透明白底

中文环境下生成失败?大概率是字体或编码问题

这个库本身不渲染文字,只画条纹。但很多人误以为它该带「下方文字」——它默认不生成人眼可读的底部数字,得自己用 GD 补。这时候如果系统没装中文字体,或者用了 imagefttext() 却传了 UTF-8 字符串没转码,就会出现乱码或空白。

更隐蔽的问题:某些 Linux 环境(如 Alpine)默认没装 fontconfigimagettfbbox() 返回负值,导致文字位置计算崩掉。不用硬扛,直接关掉文字渲染,或改用已知可用的英文字体路径,比如 /usr/share/fonts/ttf-dejavu/DejaVuSans.ttf

  • 想加底部数字,别用系统默认字体,显式指定绝对路径的 .ttf 文件
  • 中文内容不建议塞进条码内容字段——CODE128 不支持中文,强行传会编码失败
  • 如果只是要「显示中文说明」,那是 HTML 层的事,跟条码图本身无关

扫码识别不了?先看这三件事

生成的图看起来没问题,但微信/支付宝/专用扫码枪扫不出来,90% 是图像质量或尺寸问题,不是代码逻辑错。

generate() 输出的是无抗锯齿的位图,如果 module width 设成 1,条纹太细,手机摄像头自动降噪会直接抹掉;反过来设成 10,又可能超出扫码区域容忍范围。另外,GD 默认用 imagepng() 压缩等级是 9,高压缩可能引入杂点,干扰识别。

  • module width 推荐值:手机扫码用 24,工业扫码枪可用 1,但必须确保输出分辨率 ≥ 300dpi(即实际像素足够)
  • 避免用 file_put_contents() 直接存图后又用浏览器访问——某些服务器配置会拦截非标准 MIME 的 .png 请求
  • 真要调试,把生成的二进制数据 base64 编码后嵌入 <img src="data:image/png;base64,..." alt="php怎么生成条形码_php使用barcode库创建条码【识别】" >,排除文件写入/权限问题

条码不是越清晰越好,是「边缘越锐利、对比度越高、留白越足」越容易扫。留白(quiet zone)至少是 module width 的 10 倍,这点库不自动加,得自己用 imagefilledrectangle() 手动扩边。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
composer是什么插件
composer是什么插件

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

159

2023.12.25

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

246

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

826

2024.03.01

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

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

1557

2023.10.24

require的用法
require的用法

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

482

2023.11.27

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

371

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.10.25

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

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

616

2023.08.03

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

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

1030

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号