精华内容
下载资源
问答
  • 需求:点击图片后长按图片出现“识别二维码” 1、JS代码: <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/...

    场景:微信小程序,使用webview控件。需求:点击图片后长按图片出现“识别二维码”

    1、JS代码:

    
    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
    <script type="text/javascript">
    $(function(){
    		
    	var returnData = false;
    	$.ajax({
    	  type	: "get",
    	  url	: 'http://app.ka.com/m/config.php',
    	  data	: [],
    	  async	: false,
    	  success: function(data,textStatus,jqXHR){
    				returnData = data;
    				//console.log(returnData);
    			}
    	});//end ajax
    
    	var returnData = eval('(' + returnData + ')');
    	console.log(returnData);
    
    	var appId 		= returnData.appId;
    	var timestamp 	= returnData.timestamp;
    	var nonceStr 	= returnData.nonceStr;
    	var signature 	= returnData.signature;
    
    		  wx.config({
    			debug: true, //调试阶段建议开启
    			appId: appId,
    			timestamp: timestamp,
    			nonceStr: nonceStr,
    			signature: signature,
    			jsApiList: [
    				   /*
    					* 所有要调用的 API 都要加到这个列表中
    					* 这里以图像接口为例
    					*/
    				  "chooseImage",
    				  "previewImage",
    				  "uploadImage",
    				  "downloadImage",
    				  "scanQRCode"
    			]
    		  });
    				  
    			wx.ready(function() {
    			//alert(3);
    				wx.checkJsApi({
    					 jsApiList : ['scanQRCode','previewImage'],
    					 success : function(res) {
    		
    					 }
    				});
    				
    					$("img").click(function(){
    						var url = "http://app.ka.com/"+$(this).attr("src");
    						wx.previewImage({
    							current: url, // 当前显示图片的http链接
    							urls: [url] // 需要预览的图片http链接列表
    						});
    					});
    		
    			});
    		
    					  
    			wx.error(function(res){
    			
    				// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    				console.log(res);
    			});
    		
    		  
    });
    </script>

    2.服务端代码(获取config配置信息):

    <?php 
    date_default_timezone_set("Asia/Shanghai");
    
    $jssdk = new Jssdk();
    $signPackage = $jssdk->getSignPackage();
    echo json_encode($signPackage);exit;
    
    class Jssdk
    {
    	private $_CI;
    
        private $appId;
        private $appSecret;
    
        public function __construct($appId='wx666666', $appSecret='ee32') {
            $this->appId = $appId;
            $this->appSecret = $appSecret;
        }
    
        public function getSignPackage() {
            $jsapiTicket = $this->getJsApiTicket();
    
            // 注意 URL 一定要动态获取,不能 hardcode.
            $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
            $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    
            $timestamp = time();
            $nonceStr = $this->createNonceStr();
    
            // 这里参数的顺序要按照 key 值 ASCII 码升序排序
            $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
    
            $signature = sha1($string);
    
            $signPackage = array(
                "appId"     => $this->appId,
                "nonceStr"  => $nonceStr,
                "timestamp" => $timestamp,
                "url"       => $url,
                "signature" => $signature,
                "rawString" => $string,
                'jsapiTicket' =>$jsapiTicket,
            );
            return $signPackage;
        }
    
        private function createNonceStr($length = 16) {
            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            $str = "";
            for ($i = 0; $i < $length; $i++) {
                $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
            }
            return $str;
        }
    
        private function getJsApiTicket() {
            // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
            $data = $this->get_php_file("jsapi_ticket");
            //echo $data['expire_time'].'------'.time();
            //print_r($data);exit;
    
            if (!isset($data['jsapi_ticket']) ||  (isset($data['expire_time'])  && $data['expire_time'] < time())) {
                //echo 1111;
                $accessToken = $this->getAccessToken();
                // 如果是企业号用以下 URL 获取 ticket
                // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
                $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
                //echo $url;
                $res = json_decode($this->httpGet($url), true);
    
                $ticket = isset($res['ticket']) ? $res['ticket'] : false;
                if ($ticket) {
                    $data['expire_time'] = time() + 7160;
                    $data['token_value'] = $ticket;
                    $this->set_php_file("jsapi_ticket", $data);
                }
            } else {
                //echo 22222;
                $ticket = $data['jsapi_ticket'];
            }
    
            return $ticket;
        }
    
        public function getAccessToken() {
            // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
            $data = $this->get_php_file("access_token");
            if (!isset($data['access_token']) ||  (isset($data['expire_time']) && $data['expire_time'] < time())) {
                // 如果是企业号用以下URL获取access_token
                // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
                $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
                $res = json_decode($this->httpGet($url));
                //var_dump($res);exit;
                $access_token = $res->access_token;
                if ($access_token) {
                    $data['expire_time'] = time() + 7160;
                    $data['token_value'] = $access_token;
                    $this->set_php_file("access_token", $data);
                }
            } else {
                $access_token = $data['access_token'];
            }
            return $access_token;
        }
    
        private function httpGet($url) {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_TIMEOUT, 500);
            // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
            // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($curl, CURLOPT_URL, $url);
    
            $res = curl_exec($curl);
            curl_close($curl);
    
            return $res;
        }
    
        private function get_php_file($token_name) {
    		if(file_exists($token_name)) return false;
            return json_decode(file_get_contents($token_name), true);
        }
        private function set_php_file($token_name, $data) {
            $fp = fopen($token_name, "w");
            fwrite($fp, "<?php exit();?>" . json_encode($data));
            fclose($fp);
        }
    
    }
    /* End of file Jssdk.php */

     

     

    展开全文
  • 为了让用户不能获取我们的图片,好多地方都会用background然后就会发现二维码识别不了了,解决办法就是: 二维码的标签要用img而不是div加background 如果是因为图片太长识别不了二维码,就把二维码放大点 ...

    为了让用户不能获取我们的图片,好多地方都会用background然后就会发现二维码识别不了了,解决办法就是:

    二维码的标签要用img而不是div加background

    如果是因为图片太长识别不了二维码,就把二维码放大点

    • 如果想用img还不想被长按保存到,就加一个属性
    img {
    	pointer-events: none;
    	-webkit-user-select: none;
    	-moz-user-select: none;
    	user-select: none;
    } 
    
    • 需要保存的图片记得用background或者把这个属性解除↓
    /* 这个是当前图片可以被选中 */
    .img_catch {
    	pointer-events: auto;
    	-webkit-user-select: auto;
    	-moz-user-select: auto;
    	user-select: auto;
    }
    
    展开全文
  • 近来在写H5页面时发现在手机端微信里长按识别二维码有时会出现不能识别的bug,最近就对这些可能导致二维码不能识别的bug做了一下研究,写出来,和大家分享一下。 一、微信识别二维码的原理机制 我们先来看一下...

    近来在写H5页面时发现在手机端微信里长按识别二维码有时会出现不能识别的bug,最近就对这些可能导致二维码不能识别的bug做了一下研究,写出来,和大家分享一下。

       

    一、微信识别二维码的原理机制

       我们先来看一下微信识别二维码的原理机制:

       “微信识别二维码采用的逻辑是截屏识别,当客户端发现用户在网页的img标签内进行长按操作时,会立刻截屏并且启动二维码识别算法。所以这里用于二维码识别的图片是截屏,而不是之前有人提到的img标签中的图片。

       为什么要用截屏,这也是一个开发时候的思考。客户端截屏时候,可以不用考虑网络传输等因素,最快的得到识别结果,否则就需要走一次图片下载的逻辑,用户长按后等待的时间会加长,体验上也失去了快感。当然,这也带来了识别不出的问题(所以正在考虑先截屏,截屏识别失败再下载的新逻辑)。”

       详情请参考:网页中二维码识别规则

     

    二、二维码识别常见的BUG及解决方法

    1、二维码图片直接放在background里时无法识别

       由上述二维码识别原理我们可以知道客户端是检测网页的img标签内进行长按操作时,会立刻截屏并且启动二维码识别算法。所以当将二维码图片直接放在background中时,识别效果特别差,基本上是识别不出来的。所以最好是将二维码图片单独切出来放在了img标签中。

     

    2、多张二维码图片无法在同一屏幕中共享

       微信识别二维码的原理是长按的时候相当于将当前手机屏幕截屏,识别截屏后的图片,这样一张图片有两个二维码图的时候当然只会识别出一个。建议解决办法是不要在同一屏幕中放多张图片或者提示用户双击放大二维码进行二维码识别。

     

    3、多次执行长按二维码的功能会导致内存泄漏,手机会变卡

       多次执行长按二维码的功能会导致手机(iPhone)变卡。长按识别二维码,多次测试后右键识别出来是二维码图片(即没有出现“识别二维码”的按钮)。

     

    4、iOS 版微信长按识别二维码无法正常识别

    (8.21 更新:最新版6.2.4 已经修复该bug)

       以下实测在iOS 版(iPhone)微信6.2.2 中有此bug,安卓版微信暂时没有发现有此bug。

       对于二维码区域,实际可识别区域是整体上移64px,64px的偏移与二维码大小本身无关。下面的红色的区域即为实际可识别的二维码区域。为什么是神秘的64px?因为64px正好是微信内置浏览器标题栏+系统标题栏的高度。可以认为微信客户端在识别二维码的时候忽略了微信标题栏+系统状态栏的高度。

    解决方案有两个

    (1)通过为img增加padding增大可接触面积。

    (2)为二维码本身增加透明底部背景,如下:

     

    5、IOS系统meta缩放问题导致二维码无法识别

       在安卓版的微信长按二维码可以识别(前提是你的微信版本到支持此功能),但是到了苹果版的微信就识别不了,这时候可能是缩放的问题:

    (1)设置了初始缩放设置为1,最大缩放值要>=1,不支持缩放。--->可以识别。

       如<meta content="width=device-width, initial-scale=1, maximum-scale=1.2, user-scalable=0" name="viewport" />

    (2)设置了初始缩放设置为小于1或者大于1,最大缩放值大于或者等于初始缩放,不支持缩放。--->不可以识别。

       如<meta content="width=device-width, initial-scale=1.1, maximum-scale=1.2, user-scalable=0" name="viewport" />

    (3)设置了初始缩放设置为1,最大缩放值要>=1,支持缩放。--->页面不缩放之前可以识别,一旦页面缩放过后就不可以识别。

       如<meta content="width=device-width, initial-scale=1, maximum-scale=1.2, user-scalable=1" name="viewport" />

    (4)都不设置时,不可以识别。

    (5)设置了固定的宽,导致二维码的实际位置偏移到屏幕外

       <meta content="width=750, initial-scale=1, maximum-scale=1.2, user-scalable=0" name="viewport" />

    (6)页面有css样式fixed --->不可以识别。

     

    以上这些设置导致二维码图片定位不准,或者二维码全部跑到屏幕外或者部分跑到屏幕外而无法识别。以下是其解决办法:

    方法1
       设置:初始缩放为1,最大缩放值要大于1,不支持缩放。如下:

       <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=no"/>

     

    方法2

       首先要把这张二维码添加到body的子元素 放在最后或者是最前都可以,

    注意这可能影响你的布局,可设置position:absolute,进行调整,因为这才是真正用来识别的二维码,如果这个二维码位置太偏移,有可能会造成二维码无法识别。此外还需要注意的是opacity需要设为0而不是设置display属性。

       <img style="position:absolute;width: XXpx;height: XXpx;opacity: 0" src="二维码图片地址"> 

       其次,在你应该在设计稿设计的地方,放置的div里面设置你正常二维码图片的大小,以便页面呈现正常。

       <img style="你的正常大小" src="二维码图片地址" />

       这时你就会发现长按图片能够识别出来二维码。

     

       其实除了这些BUG外,二维码信息显示不全;在长按时候只有部分可见;二维码周围信息过于复杂,在整个截屏中二维码算法无法正确识别;网页没有加载完成,微信的识别js没有启动都会导致二维码无法识别,另外二维码过大或者过小时,也会出现识别困难问题,通常160*160就可以了

     

    此文章主要发布在本人所在公司网站H5案例分享(http://www.h5-share.com/)、公司公众号H5握手和个人博客中,转载请注明出处。

     

    转载于:https://www.cnblogs.com/daipianpian/p/6421843.html

    展开全文
  • 实现微信H5实现网页长按保存图片及识别二维码 使用工具 html2canvas 官方文档 html2canvas.hertzen.com/ canvas2image github.com/hongru/canv… 实施方案 将DOM 使用html2canvas转化成cavas对象 再将cavas对象使用...

    实现微信H5实现网页长按保存图片及识别二维码

    使用工具

    html2canvas 官方文档

    html2canvas.hertzen.com/

    canvas2image

    github.com/hongru/canv…

    实施方案

    • 将DOM 使用html2canvas转化成cavas对象 再将cavas对象使用canvas2image(封装toDataUR方法L)转化为png、jpeg等格式

    操作步骤

    1.引入html2canvas.js canvas2image.js

    • 可通script标签引入
    webpack引入(vue react)
    npm install --save html2canvas
    或
    yarn add html2canvas
    // 目前我安装的版本 package.json中显示的
    // html2canvas": "^1.0.0-alpha.12",
    复制代码
    npm install --save canvas2image
    // "canvas2image": "^1.0.5",
    复制代码

    网上大多中文教程版本与官方版本不一致,写法也有出入,最好在实际使用时查看官方文档

    npm 安装成功后还在需要使用的vue组件中用import引入

    import html2canvas from 'html2canvas';
    import Canvas2Image from 'canvas2image';
    // 并且在components中声名
    export default {
        data(){
          return{
          }
        },
        components: {
          Canvas2Image,
          html2canvas
        },
    }
    复制代码

    我这直接使用import引入Canvas2Image 可能会报错需修改源码

    ./node_moduler/canvas2image/canvas2image.js

    在最后一行加入export default Canvas2Image;
    var Canvas2Image = function (){
        ...
    }
    export default Canvas2Image;
    
    复制代码

    接下来就可以安排上了

    first第一步 html 转为 canvas

    选中dom对象(记住是dom对象非jquery对象)

    jquery对象转dom对象方法

    document.getElementById (“id”)获取的是dom对象
    alert(document.getElementById(“div”))得到的是[object HTMLDivElement]
    $(“#id”)获取jquery对象
    alert($(“#div”))得到的是[object Object]
    jquery对象可通过 得到dom对象
    var $v =$("#v") ; //jQuery对象 
    var v=$v[0]; //DOM对象 
    var v=$v.get(0);
    
    复制代码

    基于html2canvas.js可将一个元素渲染为canvas,只需要简单的调用html2canvas(element[, options]);即可。下列html2canvas方法会返回一个包含有<canvas>元素的promise:

    html2canvas(document.body).then(function(canvas) {
        document.body.appendChild(canvas);
        // 把body内包含的内容全部转化为canvas
    });
    复制代码

    第二部把canvas对象转化为image对象 并且使用dom操作把img标签插入即可

    清晰度解决方案

    将canvas对象的属性width和height属性放大为2倍,最后将canvas的CSS样式width和height设置为原先正常的大小。

    全部操作代码

        convert2canvas() {
          // 获取需要转化的dom对象 直接使用$('.wrap')选取的为jquery对象 无法继续操作
          var cntElem = $('.wrap')[0];
    
          var shareContent = cntElem; //需要截图的包裹的(原生的)DOM 对象
          var width = shareContent.offsetWidth; //获取dom 宽度
          var height = shareContent.offsetHeight; //获取dom 高度
    
          var canvas = document.createElement("canvas"); //创建一个canvas节点
          var scale = 2; //定义任意放大倍数 支持小数
          canvas.width = width * scale; //定义canvas 宽度 * 缩放
          canvas.height = height * scale; //定义canvas高度 *缩放
          //放大后再缩小提高清晰度
          canvas.getContext("2d").scale(scale, scale); 
          
          console.log(width)
          console.log(height)
          // 设置html2canvas方法的配置
          var opts = {
            scale: scale, // 添加的scale 参数
            canvas: canvas, //自定义 canvas
            // allowTaint: true, //允许画布上有跨域图片 不建议使用 后面详细补充
            // logging: true, //日志开关,便于查看html2canvas的内部执行流程
            width: width, //dom 原始宽度
            height: height,
            useCORS: true // 【重要】开启跨域配置
          };
          // 开始转化为canvs对象
          html2canvas(shareContent, opts).then(function(canvas) {
    
            var context = canvas.getContext('2d');
            // 【重要】关闭抗锯齿
            context.mozImageSmoothingEnabled = false;
            context.webkitImageSmoothingEnabled = false;
            context.msImageSmoothingEnabled = false;
            context.imageSmoothingEnabled = false;
    
            // 【重要】默认转化的格式为png,也可设置为其他格式
            var img = Canvas2Image.convertToJPEG(canvas, canvas.width, canvas.height);
            //转化后放哪 最好放在与 .wrap 父级下
            var detail = document.getElementsByName(".wrap");
            detail.appendChild(img);
            // 最后设置img标签为正常高度宽度 提高清晰度
            $(img).css({
              "width": canvas.width / 2 + "px",
              "height": canvas.height / 2 + "px",
            }).addClass('f-full');
    
          });
        }
    复制代码

    注意事项

    移动端截屏 只截取到浏览器当前显示的画面即一屏高度

    可能原因

    • 截取组件设置高度为height:100%;
    • 如若在截取的div中使用background-image:url() 设置背景图请使用img标签设置背景把需截取的dom撑开

    如下结构设置

    .main{
        height: auto;
        width: 100%;
    }
    img{
        width:100%;
    }
    
    <div class="main"><img><div>
    复制代码

    含有跨域图片(如微信头像等)

    如直接使用微信头像url 放入img标签中 设置html2canvas useCORS 可污染画布 allowTaint: true 虽然可转成画布 但是 cavas通过Canvas2Image 或者 toDataURL 是无法无法转化成base64 图片的

    解决方法通过

    • 服务端的代理转发(forward)实现
    • nginx 反向代理

    如果对跨域这个问题有深究的可以查看

    canvas drawImage()方法

    或者 这篇文章

    图片加载完成后执行截图

    img 标签 有 onload 属性 把方法绑定在onload上即可(vue中 @load)

    js生成二维码图片

    (vue) 使用qrcodejs2

    npm install qrcodejs2 --save
    复制代码

    页面中引入

    import QRCode from 'qrcodejs2'
    
    components: {QRCode}
    复制代码

    页面填充

    <div id="qrcode" ref="qrcode"></div>
    复制代码

    页面调用

    qrcode () {
      let qrcode = new QRCode('qrcode', {  
          width: 232,  // 设置宽度 
          height: 232, // 设置高度
          text: 'https://baidu.com'
      })  
    },
    /*
        @  在需要调用的地方  这样必须这样调用  否则会出现  appendChild  null  就是id为qrcode的dom获取不到 返回结果为null
    */
    this.$nextTick (function () {
       this.qrcode();
    })
    复制代码

    如果添加二维码成功 长按无识别二维码选项 请把二维码设置的长宽放大

    转载于:https://juejin.im/post/5b7982556fb9a019d9245cf1

    展开全文
  • vue开发H5的时候如何实现 识别二维码的功能功能 个人了解 1、 uni-app不支持h5 2、 taro是基于react开发的、支持H5但是 对于react掌握不好 3、 html5Plus 安装vue上却不生效 有哪些推荐的第三方或者其他的api
  • H5页面长按识别二维码

    千次阅读 2020-04-30 15:05:30
    我这里是用vue 写的H5 ,内嵌在小程序上, 当支付成功后会弹出一个窗, img 标签上 直接是张二维码图片,我给转base64 了, <img src="data:image/png;base64....."style="width: 200px;background-size:100% ...
  • h5识别二维码功能

    千次阅读 2017-07-04 09:41:55
    页面是H5的,我首先是直接将二维码从公众号上面取出来的另存为了,然后直接使用img标签显示在页面上。 查了资料说是因为:二维码识别感应区域x,y坐标相对偏原目标大概偏离了200px 所以得加个样式啊 .qrcode...
  • 微信H5页面长按识别二维码

    千次阅读 2019-01-17 20:05:13
    一定要查看img的这些样式有没有被none!!! img { user-select: auto; pointer-events: auto; -webkit-touch-callout: auto; -moz-user-select: auto; -webkit-user-select: auto; ...
  • 二维码用了 qrcode.vue npm install qrcode.vue --save   复制内容用了 vue-clipboard2 npm install vue-clipboard2 --save   二维码相关: <div class="qrcode"> ...
  • 微信H5 长按二维码识别不了

    千次阅读 2016-03-24 19:25:04
    解决办法: .qrcode{ padding:200px 0 0 200px !important; margin:-200px 0 0 -200px !important; position: relative;z-index: 100;... -webkit-user-select: ...对二维码图片添加qrcode样式 问题原因: 二维
  • 生成二维码并能长按识别(需要图片才能支持) 解决方法: 利用qrcodejs2插件生成二维码(canvas、table渲染不是image图片) 利用canvas的一个方法toDataURL() 返回图片展示的 data URI 实例化一个Image() ,存入...
  • vue微信H5长按无法弹出识别二维码

    千次阅读 2019-08-29 09:18:53
    使用vue写了一个H5项目,然后在IOS微信公众号里可以长按识别二维码,以便用户关注,但是发现在微信公众号无法弹出识别。 vue的路由是默认的:hash。 二、查找原因 网上搜索了很多方案,修改样式、尺寸大小、甚至...
  • 环境 框架: vue 操作系统: ios 解决 如果你的vue-router用了mode:history; 把它去掉用默认的就OK了 转载于:https://www.cnblogs.com/ruthless/p/10253954.html
  • webview长按图片识别二维码
  • H5 js 识别二维码信息

    2018-10-17 15:57:24
    quaggaJS-master 内涵demo,所有的js文件及配置文件
  • 小程序长按识别二维码, 网页在小程序中长按识别二维码,web-view长按识别二维码 效果图: html 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>&...
  • 微信iOS长按无法识别二维码

    千次阅读 2019-04-13 11:56:08
    分享一下ios微信长按无法识别二维码的问题 在网上找了一大堆的处理方式说增加img 的padding、设置缩放的、还有说图片大小的问题 、我扫码图片就是从服务号弄下来的。最后还是没用。 然后我就研究了一下到底为啥 ...
  • 主要介绍了微信小程序webview实现长按点击识别二维码功能,结合实例形式分析了webview二维码识别相关操作技巧,需要的朋友可以参考下
  • 微信小程序里长按识别二维码
  • 用ionic框架开发微信h5页面,长按图片二维码不会弹出“识别图中二维码”,而且只有安卓系统有此问题,ios没问题,请问这是怎么回事?
  • 同时识别图片是否是二维码,如果是则在弹框中追加识别二维码功能。 细节上:保存图片的弹框要显示在手指长按的位置;选择图片保存后,可以让用户直接去相册查看;选择识别二维码,判断是是不是网址,是的话可以让...
  • js实现长按二维码识别及上传二维码识别。样式随便写的,可以自己修改

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 916
精华内容 366
关键字:

h5识别二维码长按