小程序图片长按识别功能的实现方法


Posted in Javascript onAugust 30, 2018

背景

今天,做的小程序项目要求,个人中心的客服图片在用户长按时可以识别其二维码

在百度无果,参考小程序官方文档后,发现:

1.文档中有一句提示:

"image组件中二维码/小程序码图片不支持长按识别,仅在 wx.previewImage 中支持长按识别"

2.即便实现了 “wx.previewImage” 效果,但依旧是不支持二维码识别的

附录文档位置:小程序图片长按识别

代码设计

好在这也是一个不错的知识点,在此进行一番实现流程的记录,欢迎指摘.

①. wxml 页面元素设计

作为引导界面,只需放置一张图片即可,以我的代码为例

//# 使用简单的实现方式,直接赋值一个图片链接得了
<image src="https://img.fetow.com/Public/Index/images/shewm.jpg" mode="widthFix" 
 data-src="https://img.fetow.com/Public/Index/images/shewm.jpg" 
 bindtap="previewImage"></image>

②. js 文件实现 “previewImage”方法

在对应的 js 文件中,添加了如下的方法

/**
 * 图片预览方法
 * 此处注意的一点就是,调用 "wx.previewImage"时,第二个参数要求为数组形式哦
 * 当然,做过图片上传功能的应该会注意到,如果涉及到多张图片预览,图片链接数组集合即为参数 urls!
 */ 
 previewImage: function(e) {
 var current = e.target.dataset.src;
 wx.previewImage({
  current: current,
  urls: [current]
 })
 },

③. 实现效果

可以发现,下图中是没有“识别图中二维码”的选项

小程序图片长按识别功能的实现方法

如果发送给了好友或者自行保存后,在微信中打开的并长按的效果如下:

小程序图片长按识别功能的实现方法

出现问题:

1.服务器上发送过来的图片路径直接插进ctx.drawImage 上,手机上显示不了。

解决方案:利用wx.downloadFile 将图片下载再保存好这个新图片路径,然后放到ctx.drawImage 上

//下载图片
 onShow1: function (object) {
 let _this = this;
 _this.setData({
  isShowCav: true
 })
 wx.downloadFile({
  url: object.avatarurl,
  success: function (sres) {
  _this.setData({
   canvasUserPic: sres.tempFilePath
  });
  wx.downloadFile({
   url: object.show_img,
   success: function (sres1) {
   _this.setData({
    canvasShowImg: sres1.tempFilePath
   });
   _this.canvas(object);
   }
  })
  }
 })
 },

2.canvas出现在手机上的顶层,不管z-index设置多少层都没有用。

解决方案:利用wx:if="{{isShowCav}}" 将canvas临时隐藏,要用到的时候再显示。不用再隐藏掉。

3.canvas里面的文字如何居中,官方文档虽然提供了案例,但是没有说具体是怎么用的。

解决方案:

const ctx = wx.createCanvasContext('myCanvas')

ctx.setStrokeStyle('red')
ctx.moveTo(150, 20)
ctx.lineTo(150, 170)
ctx.stroke()

ctx.setFontSize(15)
ctx.setTextAlign('left')
ctx.fillText('textAlign=left', 150, 60)

ctx.setTextAlign('center')
ctx.fillText('textAlign=center', 150, 80)

ctx.setTextAlign('right')
ctx.fillText('textAlign=right', 150, 100)

ctx.draw()

小程序图片长按识别功能的实现方法

这里面的居中不是我们常用的css那种居中;而是忽略了文字宽高的意思,所以你还是要给文字设置一个(x,y)坐标,只要将这个坐标写上canvas宽度的一半,它就可以实现居中了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在JS中如何调用JSP中的变量
Jan 22 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
Sep 15 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
理解javascript异步编程
Jan 27 Javascript
AngularJS入门教程之AngularJS模型
Apr 18 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
May 24 Javascript
学习JS中的DOM节点以及操作
Apr 30 Javascript
VUE解决 v-html不能触发点击事件的问题
Oct 28 Javascript
vue+elementui 对话框取消 表单验证重置示例
Oct 29 Javascript
深入详解JS函数的柯里化
Jun 09 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
Aug 30 #Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 #Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 #Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 #Javascript
在Vue methods中调用filters里的过滤器实例
Aug 30 #Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 #Javascript
对vue中methods互相调用的方法详解
Aug 30 #Javascript
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
星际争霸任务指南——虫族
2020/03/04 星际争霸
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
Python列表(List)知识点总结
2019/02/18 Python
Python数据类型之List列表实例详解
2019/05/08 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
2013年研究生毕业感言
2014/02/06 职场文书
租房协议书
2014/04/10 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏