准备工作

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解析二维码相关推荐

  1. asp.net C#生成和解析二维码代码

    类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec; using Though ...

  2. java生成二维码/java解析二维码

    二维码的优缺点 优点:1. 高密度编码,信息容量大:2.编码范围广:3.容错能力强:4.译码可靠性高:5.可引入加密措施:6.成本低,易制作,持久耐用. 缺点:1.二维码技术成为手机病毒.钓鱼网站传播 ...

  3. opencv图像处理中的一些滤波器+利用滤波器提取条形码(解析二维码)+公交卡倾斜矫正+物体尺寸丈量

    一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像中的细节信息也主要集中在其高频部分,因此,如何去掉高频干扰同时又保持细节信息是关键.为了去除噪声,有必要对图像进行平滑,可 ...

  4. 嵌入式使用Zbar解析二维码

    引言 上篇文章介绍了使用Quirc解析二维码,Quirc是一个轻量级的二维码解析库,效率太低,不符合使用条件,作者使用Zbar来进行二维码的解析.Zbar算法是现在网上开源的条形码,二维码检测算法,这 ...

  5. 使用摄像头解析二维码,且可以生成含具体信息的二维码

    开源一份早些时候写过的代码,关于二维码在PC端的应用. 二维码的具体应用范围,这里不详述. 之前项目主要用于朋友一个牙科的平台,不过后面没有采用,也就没有往后继续开发,大家要是觉得有意思,可以自己拿去 ...

  6. Android超方便 集成 Zxing实现扫一扫,闪光灯,生成二维码图片,解析二维码(条码)等功能

    之前我写过一篇博客是关于如何将zxing集成到Android Studio中,以及简单的实现扫一扫功能. 详情请看:Android Studio集成Zxing扫一扫 但是,上面那篇博客只有有一个扫一扫 ...

  7. llqrcode.js识别二维码,解析二维码信息

    llqrcode.js具有扫描二维码功能,用来进行从图片中识别二维码,可解析二维码的信息. 直接上代码 <!DOCTYPE html> <html> <head>& ...

  8. Java生成和解析二维码

    前言:曾经有做过不少微信公众号和移动网站的项目,对二维码还算有点了解,刚收到这个任务的时候就想着竟然要用二维码存文本,那就得先考究一下这小小的二维码到底能存多少的东西了. 需求:使用二维码存放文本(x ...

  9. Java实现生成和解析二维码

    Java实现生成和解析二维码 文章目录 Java实现生成和解析二维码 一.建立项目 二.创建工具类 三.创建启动类 一.建立项目 首先需要创建一个普通的 Maven 项目,在这里我用的是 google ...

最新文章

  1. cat在MATLAB中的应用
  2. 韵乐x5最佳参数手动_诺基亚X5、vivoZ1青春版、海信彩墨屏阅读手机A5C对比
  3. 神经网络最优化方法比较(代码理解)
  4. 嘿,是时候重新认识下海淘了
  5. 成都Uber优步司机奖励政策(4月22日)
  6. HDU1555 How many days?【水题+模拟】
  7. 两数组映射为一个哈希
  8. 一个迅速崛起的国产开源OCR项目!
  9. matlab 符号函数是什么意思,matlab符号函数定义
  10. SSL_2278 Oliver的救援
  11. leaflet+D3
  12. NAT基本原理与私有IP
  13. 第六章:项目进度管理 - (6.6 控制进度)
  14. C#图片处理 解决左右镜像相反(旋转图片)
  15. 花呗能不能不还?支付宝说春节集五福中彩蛋可帮还
  16. 正则表达式在shell中使用的方法与案例
  17. 回归分析(预测模型)
  18. matlab形变监测,徕卡隧道形变监测程序
  19. NFD开发指南-1.介绍
  20. matlab中定义数组

热门文章

  1. 高频交易四大派系大揭秘
  2. 如何将360流量监控数据清零 解决方法
  3. 短视频源码仿抖音短视频APP源码短视频平台源码短视频源码
  4. 低频数字式相位测量仪介绍
  5. 服务器加固安全指导书
  6. 人员管理KPI和OKR
  7. 需求调研报告模板_中国脂肪醇市场需求调研与十四五投资战略规划分析报告2021-2026年...
  8. pmp考试报名麻烦吗?
  9. FPGA信号完整性分析
  10. 高大上的苹果San Francisco字体开放下载