前端:

<style>
div.file{display:inline-block;width:400px;height:400px;line-height:200px;position:relative;overflow:hidden;color:red;font-size:100px;}
div.file input{position:absolute;width:500px;height:500px;left:50px;top:0px;zoom:1;filter:alpha(opacity=0);opacity:0;font-size:100px;}button:last-chile{width:200px;height:200px;}
.btn{width:200px;height:200px;
font-size:80px;
}
</style><!--[if lte IE 7]><style>div.file{display:inline}</style><![endif]-->
<form id="imageForm" class="bs-docs-example form-horizontal" method="post" action="https://www.beefvip.com/index.php?route=account/my/erweima"  enctype="multipart/form-data">
<div class="file">扫一扫<input  type="file" capture="camera" accept="image/*" id="image" name="image"  multiple/></div>
<input type="hidden" name="base64img" id="base64img"/>
</form><script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>$(function(){$("input[type=file]").on('change', function(){var filePath = $(this).val(),         //获取到input的value,里面是文件的路径fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),fileObj = document.getElementById($(this).attr('id')).files[0]; //上传文件的对象,要这样写才行,用jquery写法获取不到对象var imgBase64str = '';      //存储图片的imgBase64// 检查是否是图片if( !fileFormat.match(/.png|.jpg|.jpeg/) ) {alert('上传错误,文件格式必须为:png/jpg/jpeg');return;}var that = this;// 调用函数,对图片进行压缩compress(fileObj,function(imgBase64){imgBase64str = imgBase64;//存储转换后的base64编码var reader  = new FileReader();file = that.files[0]reader.addEventListener("load", function () {$("#base64img").val(imgBase64str); document.forms[0].submit();}, false);reader.readAsDataURL(file)});})})// 对图片进行压缩function compress(fileObj, callback){if ( typeof (FileReader) === 'undefined') {console.log("当前浏览器内核不支持base64图标压缩");//调用上传方式不压缩directTurnIntoBase64(fileObj,callback);} else {var reader = new FileReader();reader.onload = function (e) { //要先确保图片完整获取到,这是个异步事件var image = new Image();image.src=e.target.result;image.onload = function(){square = 0.2,   //定义画布的大小,也就是图片压缩之后的像素canvas = document.createElement('canvas'), //创建canvas元素context = canvas.getContext('2d'),imageWidth = Math.round(square*image.width),    //压缩图片的大小imageHeight = Math.round(square*image.height),data = '';canvas.width = imageWidth;canvas.height = imageHeight;context.clearRect(0, 0, imageWidth, imageHeight);  //在给定矩形内清空一个矩形context.drawImage(this, 0, 0, imageWidth, imageHeight);var data = canvas.toDataURL('image/jpeg',0.6);//压缩完成执行回调callback(data);};};reader.readAsDataURL(fileObj);}}// 不对图片进行压缩,直接转成base64function directTurnIntoBase64(fileObj,callback){var r = new FileReader();// 转成base64r.onload = function(){//变成字符串imgBase64 = r.result;//console.log(imgBase64);callback(imgBase64);}r.readAsDataURL(fileObj);    //转成Base64格式}
</script>

php后台代码:


public function erweima(){
// https://www.beefvip.com/index.php?route=account/my/erweima
//https://paystation.top/api/index/editimg$base64img=$_REQUEST['base64img'];
$infoz_info = $this->base64_image_content($base64img,"/www/wwwroot/www.beefvip.com/upload/saoyisao/");
//echo($infoz_info['filepath']);
$path=$infoz_info['filepath'];
list($kong,$www, $wwwroot, $beefvip, $upload, $saoyisao, $img) = explode("/", $path);
$p = $beefvip.'/'.$saoyisao.'/'.$img;//存进数据库
$this->load->model('account/allzong');
$info= $this->model_account_allzong->saoyisao($p);
// var_dump($info);include_once 'lib/QrReader.php';// 引入识别二维码插件// 读取二维码的缩略图并识别,识别二维码
$qrcode = new \QrReader($path);
$text = $qrcode->text(); //返回识别后的文本
// $uuid = explode("q/", $text)[1]; // 截取最后的参数
// var_dump($qrcode);
// var_dump($text);
if($text){
//header( "Location: $text" );
echo $text;
}else{
echo '0';
}
}/**
* [将Base64图片转换为本地图片并保存]
* @param $base64_image_content [要保存的Base64]
* @param $path [要保存的路径]
* @return bool|string
*/
public function base64_image_content($base64_image_content,$path){
//匹配出图片的格式
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
$type = $result[2];
//生成文件名
$file_name = mt_rand(1,10).".{$type}";
//路径和文件名拼接
$local_file_url = $path.$file_name;
if (file_put_contents($local_file_url, base64_decode(str_replace($result[1], '', $base64_image_content)))){
return array("filename"=>$file_name,"path"=>$path,"filepath"=>$local_file_url);
}else{
return false;
}
}else{
return false;
}
}

lib二维码插件包下载地址:

链接:https://pan.baidu.com/s/1LdnHySv9-kHMbKyXbEcFnA
提取码:th68

PHP扫二维码直接跳地址相关推荐

  1. ios app 解决微信扫二维码不能跳转问题

    ios app 解决微信扫二维码不能跳转问题 参考文章: (1)ios app 解决微信扫二维码不能跳转问题 (2)https://www.cnblogs.com/wuxian/p/4618374.h ...

  2. 扫二维码自动跳转【java】

    这个帖子网上很多了,但是都是讲理论知识,我呢,喜欢搞代码.既然搞完了,就贴出来备忘一下,也可以分享一下. 重复理论步骤: 1.进入网站-生成UUID 2.跳转到二维码页面(二维码包含UUID) 3.二 ...

  3. 366API如何做到微信扫二维码无跳转调用外部浏览器页面

    源码使用场景: 1.用来实现微信自动跳转外部浏览器下载app 2.用来实现微信内打开网页链接自动跳转浏览器访问指定页面 3.防止网页链接由于被微信拦截,导致用户无法正常在微信内打开 源码说明: 适用安 ...

  4. H5+微信公众号扫二维码页面跳转功能 vue实现

    后端生成二维码,二维码里面带有参数 前端在默认页面的声明周期created方法,接收二维码的参数,location.href能获取到二维码携带的参数 有两种情况,一是二维码已失效,不带任何参数:另一种 ...

  5. 用支付宝扫自己生成的网页二维码无法跳转的问题

    支付宝扫自己生成的二维码无法跳转的问题 问题详细描述: 自己写了一个网页,把网页链接用草料二维码生成一个新的二维码,用支付宝扫这个二维码无法跳转到网页. 目前已知无法跳转大概有以下的几个问题 问题一: ...

  6. iphone用微信扫二维码下载app跳转问题解决心得

    由于市场需要公司做了款窝窝宝软装的app,分为Android和IOS两个版本. 为了用户更好的体验,两个版本扫描同一个二维码,然后通过程序判断跳转不同版本的下载链接,写完之后用自己的手机(安卓)测试了 ...

  7. 小程序:扫二维码跳转小程序

    文章目录 扫二维码跳转小程序 条件 方法一 把小程序发布到线上 生成二维码 参考 方法二:跳转到小程序指定页面 测试范围 附加:小程序获取二维码中的数据 扫二维码跳转小程序 条件 你的小程序必须要上线 ...

  8. 前端JS调用微信扫一扫二维码

    来源: 最近做一个项目,H5页面,在微信中打开,里面有个功能,就是  点击按钮弹出微信二维码扫一扫. 项目截图: 暂时没有图,下次再补上.就是页面点击按钮,弹出扫二维码的窗口 我只负责前端,所以只上前 ...

  9. 一码多用:扫描一个二维码自动跳转支付宝/微信小程序、安卓/iosAPP

    随着支付宝,微信小程序的慢慢崛起,现在很多公司同一款程序都开发了四个版本.支付宝/微信小程序.安卓/iosAPP.但是随着程序的增加,引导用户使用就成了问题.比如,一家店门口如何贴一张二维码.实现用户 ...

最新文章

  1. ETC带火车牌识别设备 多方企业狭路相逢
  2. 虚拟机中mysql-cobar安装_cobar配置安装
  3. 技术解析系列 | PouchContainer 富容器技术
  4. python十进制小数转二进制_python十进制和二进制的转换方法(含浮点数)
  5. android配置activity
  6. python init self_转载--------Python中:self和__init__的含义 + 为何要有self和__init__
  7. ArcGIS 10.7 模型构建器Model Builder空间建模流程化作业案例----影像拼接与掩膜裁剪
  8. 查询接待收待飞地数量失败_中国有哪些飞地?
  9. Security+ 学习笔记14 对称密码学
  10. 2013年7月底至8月初51Aspx源码发布详情
  11. PowerDesign画ER图
  12. mysql migration toolkit报错_MYSQL Migration Toolkit 安装
  13. 惠普打印机卡纸问题,解决.
  14. Java高级工程师常见面试题
  15. 计算机属于电器还是学习用品,未来的学习用品作文
  16. Alpha-beta 算法
  17. android各个版本的名称和更新
  18. 你的女朋友能做到几条?
  19. gem5中运行spec2006
  20. 原生js实现带左右箭头可滑动的tab效果

热门文章

  1. Elasticsearch CCR源码分析
  2. 跨集群复制(CCR)
  3. 一个黑科技,Python竟然可以伪造很多'假'的数据!
  4. c 传递流java 生僻字_Java语言中的生僻知识
  5. 人是Web3最终进化
  6. 一键反推食谱,与狗对话,识别女票表情…愚人节,AI 也被玩坏了
  7. 《自然》杂志发布2018年度影响世界的十大科学人物,中国神童入榜
  8. TyoeScript
  9. 165页最全银行IT核心系统研究框架
  10. HTML+CSS_第四部分(Sass与Less、PostCSS、CSS架构与文件组织、CSS新特征)