PHP、Python、JavaScript 识别二维码和生成二维码解决方案

PHP、Python、Javascript 识别二维码和生成二维码解决方案

PHP#

生成二维码#

安装 endroid/qr-code

composer require endroid/qr-code

使用 Demo 更多请查看 文档

use Endroid\QrCode\QrCode;

$qrCode = new QrCode('Life is too short to be generating QR codes');

header('Content-Type: '.$qrCode->getContentType());
echo $qrCode->writeString();
exit(); //需加上这行 不然会乱码

识别二维码#

安装 khanamiryan/php-qrcode-detector-decoder 包,此包是基于谷歌开源的 zxing 实现的。

composer require khanamiryan/qrcode-detector-decoder

使用 Demo 更多请查看 文档

use Zxing\QrReader;

$qrcode = new QrReader('path/to_image');
$text = $qrcode->text(); //return decoded text from QR Code

Python#

生成二维码#

安装 qrcode

pip install qrcode

使用 Demo

import qrcode

# 二维码内容
data = "https://www.baidu.com"
# 生成二维码
img = qrcode.make(data=data)
# 直接显示二维码
img.show()
# 保存二维码为文件
# img.save("baidu.jpg")

识别二维码#

安装 zxing 包 (此包依赖 JDK 环境,需要先安装 JDK 环境)

pip install zxing

使用 Demo

import zxing

reader = zxing.BarCodeReader()
barcode = reader.decode("baidu.jpg")
print(barcode.parsed)

更多请参考 Python3+qrcode+zxing 生成和识别二维码教程

Javascript#

生成二维码#

在网页中引入 jquery.qrcode.js

<script src="https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>

创建一个 div 标签用来显示二维码

<div id="qrcode"></div>

使用 Demo

jquery('#qrcode').qrcode("this plugin is great");
jquery('#qrcode').qrcode({width: 64,height: 64,text: "size doesn't matter"}); //自定义二维码大小

识别二维码#

js 识别、生成二维码在线 DEMO
生成是用的 jquery.qrcode.js 实现的,识别是我从 WebQR 这个网站扒下来的。下载源码
已知问题:Windows 版的 Chrome 和安卓手机测试是没问题的,但 Mac 和 ios 上 js 报错。无法识别二维码!

踩坑总结#

需求是实现用户上传支付宝、微信收款码。程序识别二维码内容然后重新生成二维码。(⊙o⊙)… 因为收款码上有多余的内容~~~
百毒找了一圈 php 识别二维码,就只有装扩展而且作者还弃坑了。遂放弃...
后面找到一个 js 方案。从 webqr 上扒下人家的 js。嗯 实现了。上线运行 ... 发现苹果设备不兼容。
后改成调别人 API 识别。发现识别也不是很理想。
后面查找 python 识别方案。找到了 zxing 包。发现居然依赖 JDK...
最后发现 zxing 是谷歌开源的识别方案,嗯 有人移植到了 php...
猝... 珍爱生命,远离百毒。信谷歌保平安。

本作品采用《CC 协议》,转载必须注明作者和本文链接
没有啥是一行代码解决不了的,如果有那就两行。
本帖由系统于 6年前 自动加精
Flex
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 22

可以看看:

composer require simplesoftwareio/simple-qrcode
6年前 评论

PHP 为什么输出这样

$qrCode = new QrCode('Life is too short to be generating QR codes');
        header('Content-Type: '.$qrCode->getContentType());
        echo $qrCode->writeString();

file

6年前 评论
chenyuanqi

正找二维码解码的,就看到了这个,顺利!

6年前 评论
Flex

@lovecn 我试了下也是乱码的,不过保存为文件就没问题。不知道是不是作者的一个 bug。

6年前 评论

@lovecn 最后加上 exit (),试试看

6年前 评论

@lovecn 这个是 content-type: image/png 头部问题

6年前 评论

请问为什么我安装好了之后打开页面提示:file_get_contents () expects parameter 1 to be a valid path, object given 我什么都没改过

6年前 评论

@puzzle9 请问为什么我安装好了之后打开页面提示:file_get_contents () expects parameter 1 to be a valid path, object given 我什么都没改过

6年前 评论

@laravel99 这个问题问的好 我们一起研究一下

6年前 评论

@puzzle9 百毒了一天.. 没找到处理结果。什么 php 配置未开启之类的。图片地址不正确等。都试过了。还是报错。您有啥好的办法没

6年前 评论

打开测试出来的错位位置file
@laravel99

6年前 评论
Flex

@laravel99 你是用 php 那个二维码解析包是吧?

$qrcode = new QrReader('path/to_image'); 
$text = $qrcode->text(); 

path/to_image 这里要替换成你要解析的包含二维码图片的绝对路径

6年前 评论

解析二维码的速度慢 有没有办法优化

5年前 评论

@redline 同样的问题,速度有办法优化吗

5年前 评论

@liyy777 没。。我本地慢点 服务器上还挺快的 :joy:

5年前 评论

解析微信群二维码返回的地址点进去没反应,???

4年前 评论

@ilham 微信的二维码可能不是标准的二维码 据我了解小程序码就不是的

4年前 评论