问题描述

qrcode生成的二维码,在苹果等手机上长按可识别,在华为手机上长按没有反应,截图保存下来长按又可以识别。

问题原因

浏览器兼容问题
qrcode在页面生成二维码时,会生成一个canvas标签和一个img标签。在电脑浏览器上调试的时候,发现生成二维码之后canvas标签是会自动隐藏的,然后展示img标签,我们看到和识别的其实是图片。但是在华为手机上生成的canvas是不会隐藏的,我们看到的是canvas,所以无法识别,截图却可以。

解决办法

手动将canvas隐藏,获取生成的链接拼到图片里面。
html页面:

<!--用于存放canvas,隐藏-->
<div id="QRCodeNone" style="width:54%;height:200px;margin:8% 0 8% 23%;display:none;"></div>
<!--用于存放二维码中间logo图片-->
<img id="qrCodeIco" src="cicLogo.png" style="display:none;"/>
<!--用于存放二维码图片-->
<div id="QRCode" style="width:54%;height:200px;margin:8% 0 8% 23%;"></div>

js:

  function makeQRCode() {var width = 200,height = 200;     var shareUrl = "分享出去的链接" var x = width * 0.4,y = height * 0.4,lx = width * 0.2, ly = height * 0.2;   $("#QRCode").qrcode({render: "canvas",text: shareUrl,width : width,               //二维码的宽度height : height,              //二维码的高度background : "#ffffff",       //二维码的后景色foreground : "#3498db"        //二维码的前景色//src: "logo"});//在小米或者华为手机上生成的二维码是通过canvas展示的,img标签被隐藏,所以需要特殊处理一下,将canvas标签隐藏,拿到生成的url放到img里面再展示出来var myCanvas = document.getElementsByTagName('canvas')[0];//添加logo,qrcode中src方式带的logo因为跨域等问题,在toDataURL会丢失,这儿手动绘制一个myCanvas.getContext('2d').drawImage($("#qrCodeIco")[0], x, y, lx, ly);var img = convertCanvasToImage(myCanvas);$("#QRCode").append(img);};//将canvas返回的图片添加到image里function convertCanvasToImage(canvas){var image = new Image();image.src = canvas.toDataURL("image/png");return image;}

toDataURL语法

canvas.toDataURL(type, encoderOptions);
返回一个包含图片展示的 data URI
参数
type 可选
图片格式,默认为image/png
encoderOptions 可选
图片质量。取值范围为0到1。如果指定图片格式为image/jpeg或image/webp。如果超出取值范围,将会使用默认值0.92。其他参数会被忽略。

返回值
包含dataURI的DOMString。
DataURI格式:data:[][;base64],。其中mediatype声明了文件类型,遵循MIME规则,如“image/png”、“text/plain”;之后是编码类型,这里我们只涉及 base64;紧接着就是文件编码后的内容了。

解决qrcode生成的二维码华为手机长按不识别、toDataURL之后中间logo丢失等问题相关推荐

  1. 解决qrcode生成的二维码安卓手机长按不识别问题

    文章目录 问题描述 toDataURL语法 自己验证 问题描述 qrcode生成的二维码,在苹果等手机上长按可识别,在华为手机上长按没有反应,截图保存下来长按又可以识别. 问题原因 浏览器兼容问题 q ...

  2. 使用qrcode生成的二维码安卓手机长按不识别问题

    1.下载依赖 npm install qrcodejs2 --save 2页面引用 import QRCode from "qrcodejs2"; 3.生成二维码 3.1节点 &l ...

  3. qrcode方法生成的二维码安卓手机长按不识别

    qrcode生成的二维码,在苹果等手机上长按可识别,在华为手机上长按没有反应,截图保存下来长按又可以识别. #问题原因 浏览器兼容问题 qrcode在页面生成二维码时,会生成一个canvas标签和一个 ...

  4. 解决qrcode生成的二维码微信长按不识别问题

    问题描述 QRcode 生成二维码,展示到页面,微信打开,长按二维码没反应.而直接放二维码图片上去可以识别. 问题原因 手机兼容问题 qrcode在页面生成二维码时,会生成一个canvas标签和一个i ...

  5. ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法

    ThoughtWorks.QRCode 生成QR二维码时提示"索引超出了数组界限"的原因和解决方法 参考文章: (1)ThoughtWorks.QRCode 生成QR二维码时提示& ...

  6. vue/html+qrcode生成付款二维码(前端部分)

    vue+qrcode生成付款二维码 1.Vue项目中如何使用qrcode生成付款二维码 一.安装qrcode.js 二.新建qrcode.vue组件 三.项目中引入组件 2.Html项目中如何使用 1 ...

  7. [Python]使用QRCode生成彩色二维码

    一. 安装QRCode模块 QRCode模块依赖于Pillow模块,在安装QRCode模块前需要先安装Pillow模块.可使用如下命令安装: pip install Pillow QRCode模块安装 ...

  8. python qrcode生成彩色二维码

    git 地址:https://github.com/lincolnloop/python-qrcode def demo():img = qrcode.make("你今年要发财啊!!!&qu ...

  9. 网页前端知识汇总(三)——网页前端利用二维码插件qrcode生成在线二维码

    最近几年二维码的广泛应用,方便了很多行业,如支付宝,微信,小程序扫码之类的,这个在二十年前,想都不敢想这么方便,那时候有书刊编码扫一扫都感觉是高科技了,如今,二维码的广泛应用,生活还是方便了不少!这个 ...

最新文章

  1. R语言ggplot2可视化分面图(faceting)、编写自定义函数将生成的分面图分裂成多个子图、并按照索引读取对应的可视化图像:Split facet plot into list of plots
  2. 解决ASP.NET网站发布问题
  3. 【错误记录】Ubuntu 中 ROOT 用户无法启动 Visual Studio Code 开发环境 ( 推荐在普通用户下使用 VSCode 开发环境 )
  4. 【科普】国内外高质量数据科学竞赛平台有哪些?
  5. 【遥感物候】Matlab求解一元六次多项式,计算植被生长季始期
  6. PHP foreach使用 引用 的坑
  7. COOLFluiD安装教程
  8. Excel如何实现随机抽取
  9. LightOJ1336
  10. Ubuntu(Linux) 磁盘分区方案
  11. linux 软件放什么目录,Linux 下的各种目录
  12. MDCC 2014移动开发人员大会參会实录
  13. GC日志中sys时间比user时间长该如何处理?
  14. 你想要的宏基因组-微生物组知识全在这(180901)
  15. 嵌入式FCT项目案例分享(STM32)
  16. 【论文翻译】DANN的改进ADDA Multimodal Vigilance Estimation with Adversarial Domain Adaptation Networks
  17. springboot搭建支付宝手机网站支付
  18. Xilinx Zynq ZynqMP DNA
  19. 剖析Vue实现双向数据绑定原理
  20. PaddleOCR数字仪表识别——3.paddleocr迁移学习

热门文章

  1. java执行python脚本_通过Java调用Python脚本
  2. python图像处理第三方库mayavi_用Mayavi和Python在曲面上渲染图像
  3. Live555学习笔记(一)—— live555概述
  4. js代码-防抖函数(立即执行和非立即执行)
  5. SpringDataJPA使用getOne(id)导致Json序列化失败
  6. Python 考试练习题 2
  7. MySQL 字符集 和 排序规则
  8. matlab怎么三维图形旋转45度,是否可以在matlab中将矩阵旋转45度
  9. 【PHP版·猴子选大王·约瑟夫环】 一堆猴子都有编号,编号是1,2,3 ...m
  10. CS - IT - 企业管理软件