thinkPHP6解析二维码
准备工作
PHP版本7.3
QrReader类,下载地址,将解压出来的文件夹放入网站根目录的“vendor”文件夹中
开始
1.图片上传
首先接收上传过来的图片,并将图片存放在本地
PHP代码
/*** 图片上传(ajax)* @return \think\Response|void* @throws \Exception*/public function upload(){// 获取表单上传文件 例如上传了001.jpg$file = request()->file('file');//验证validate(['image' => ['fileSize' => 1024 * 5,'fileExt' => 'jpg,jpeg,png,bmp,gif','fileMime' => 'image/jpeg,image/png,image', //这个一定要加上,很重要我认为!]])->check(['imgFile' => $file]);// 上传图片到本地服务器$saveName = \think\facade\Filesystem::putFile('QRcode', $file);if ($saveName) {return json_encode(['code' => 200, 'address' => $saveName]);} else {return json_encode(['code' => 400, 'msg' => '上传文件失败']);}}
html代码如下,这段代码没有仔细斟酌,可能会出错
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>提交</title><link rel="stylesheet" href="/static/api/layui/css/layui.css"><script src="/static/api/js/jquery.min.js" type="text/javascript" charset="utf-8"></script><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><style>.body{width: 350px;margin: 100px auto;}.layui-form-label {padding: 13px 15px;font-size: 25px;width: 300px;text-align: left;}.layui-input-block {margin-left: 10px;}</style><script src="/static/api/layui/layui.js"></script>
</head><body>
<div class="body"><div class="layui-form"><div class="layui-form-item"><div class="layui-input-block"><input type="hidden" name="images" class="image"><button type="button" class="layui-btn" id="QRcode" name="image"><i class="layui-icon"></i>上传图片</button></div></div></div>
</div></body><script>layui.use('upload', function(){var upload = layui.upload;//执行实例var uploadInst = upload.render({elem: '#QRcode' //绑定元素,url: '/api/QrReader/upload/' //上传接口,accept:'images' //只允许上传图片,method: 'post',acceptMime: 'image/*',done: function(res){if (res.code == 200){$('#address').val(res.address);layer.msg('上传成功', {icon: 1});}else{layer.msg(res.msg, {icon: 5});}//上传完毕回调},error: function(){//请求异常回调}});});
</script>
</html>
2.压缩图片
经过测试,QrReader无法解析过大的图片,我们可以利用thinkPHP的图像处理类库将图片变小
代码如下
/** $img_path 被压缩的图片的路径* $thumb_w 压缩的宽* $save_path 压缩后图片的存储路径* $is_del 是否删除原文件,默认删除*/public function thumb_img($img_path, $thumb_w, $save_path, $is_del = true){$image = \think\Image::open($img_path);$width = $image->width(); // 返回图片的宽度if ($width > $thumb_w) {$width = $width / $thumb_w; //取得图片的长宽比$height = $image->height();$thumb_h = ceil($height / $width);}else{$thumb_w = $image->width();$thumb_h = $image->height();}//如果文件路径不存在则创建$save_path_info = pathinfo($save_path);if (!is_dir($save_path_info['dirname'])) mkdir($save_path_info['dirname'], 0777);$image->thumb($thumb_w, $thumb_h)->save($save_path);if ($is_del) @unlink($img_path); //删除源文件}
经测试,$thumb_w给个800就够了
3.解码
此时可以调用QrReader去解码了,注意,二维码要传入图片的地址,不知道支不支持base64,没仔细研究里面的配置
解码代码如下
//php解码,传入图片的本地路径public function QrReader($url){//引入需要的类require '../vendor/php_QrReader-master/lib/QrReader.php';// 将我们要识别的二维码放进去$qrcode = new \QrReader($url); //图片路径//返回识别后的文本$text = $qrcode->text();return $text;}
thinkPHP6解析二维码相关推荐
- asp.net C#生成和解析二维码代码
类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec; using Though ...
- java生成二维码/java解析二维码
二维码的优缺点 优点:1. 高密度编码,信息容量大:2.编码范围广:3.容错能力强:4.译码可靠性高:5.可引入加密措施:6.成本低,易制作,持久耐用. 缺点:1.二维码技术成为手机病毒.钓鱼网站传播 ...
- opencv图像处理中的一些滤波器+利用滤波器提取条形码(解析二维码)+公交卡倾斜矫正+物体尺寸丈量
一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像中的细节信息也主要集中在其高频部分,因此,如何去掉高频干扰同时又保持细节信息是关键.为了去除噪声,有必要对图像进行平滑,可 ...
- 嵌入式使用Zbar解析二维码
引言 上篇文章介绍了使用Quirc解析二维码,Quirc是一个轻量级的二维码解析库,效率太低,不符合使用条件,作者使用Zbar来进行二维码的解析.Zbar算法是现在网上开源的条形码,二维码检测算法,这 ...
- 使用摄像头解析二维码,且可以生成含具体信息的二维码
开源一份早些时候写过的代码,关于二维码在PC端的应用. 二维码的具体应用范围,这里不详述. 之前项目主要用于朋友一个牙科的平台,不过后面没有采用,也就没有往后继续开发,大家要是觉得有意思,可以自己拿去 ...
- Android超方便 集成 Zxing实现扫一扫,闪光灯,生成二维码图片,解析二维码(条码)等功能
之前我写过一篇博客是关于如何将zxing集成到Android Studio中,以及简单的实现扫一扫功能. 详情请看:Android Studio集成Zxing扫一扫 但是,上面那篇博客只有有一个扫一扫 ...
- llqrcode.js识别二维码,解析二维码信息
llqrcode.js具有扫描二维码功能,用来进行从图片中识别二维码,可解析二维码的信息. 直接上代码 <!DOCTYPE html> <html> <head>& ...
- Java生成和解析二维码
前言:曾经有做过不少微信公众号和移动网站的项目,对二维码还算有点了解,刚收到这个任务的时候就想着竟然要用二维码存文本,那就得先考究一下这小小的二维码到底能存多少的东西了. 需求:使用二维码存放文本(x ...
- Java实现生成和解析二维码
Java实现生成和解析二维码 文章目录 Java实现生成和解析二维码 一.建立项目 二.创建工具类 三.创建启动类 一.建立项目 首先需要创建一个普通的 Maven 项目,在这里我用的是 google ...
最新文章
- cat在MATLAB中的应用
- 韵乐x5最佳参数手动_诺基亚X5、vivoZ1青春版、海信彩墨屏阅读手机A5C对比
- 神经网络最优化方法比较(代码理解)
- 嘿,是时候重新认识下海淘了
- 成都Uber优步司机奖励政策(4月22日)
- HDU1555 How many days?【水题+模拟】
- 两数组映射为一个哈希
- 一个迅速崛起的国产开源OCR项目!
- matlab 符号函数是什么意思,matlab符号函数定义
- SSL_2278 Oliver的救援
- leaflet+D3
- NAT基本原理与私有IP
- 第六章:项目进度管理 - (6.6 控制进度)
- C#图片处理 解决左右镜像相反(旋转图片)
- 花呗能不能不还?支付宝说春节集五福中彩蛋可帮还
- 正则表达式在shell中使用的方法与案例
- 回归分析(预测模型)
- matlab形变监测,徕卡隧道形变监测程序
- NFD开发指南-1.介绍
- matlab中定义数组