国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

小程序圖片長(zhǎng)按識(shí)別功能的實(shí)現(xiàn)方法

2019-11-19 13:06:08
字體:
供稿:網(wǎng)友

背景

今天,做的小程序項(xiàng)目要求,個(gè)人中心的客服圖片在用戶長(zhǎng)按時(shí)可以識(shí)別其二維碼

在百度無果,參考小程序官方文檔后,發(fā)現(xiàn):

1.文檔中有一句提示:

"image組件中二維碼/小程序碼圖片不支持長(zhǎng)按識(shí)別,僅在 wx.previewImage 中支持長(zhǎng)按識(shí)別"

2.即便實(shí)現(xiàn)了 “wx.previewImage” 效果,但依舊是不支持二維碼識(shí)別的

附錄文檔位置:小程序圖片長(zhǎng)按識(shí)別

代碼設(shè)計(jì)

好在這也是一個(gè)不錯(cuò)的知識(shí)點(diǎn),在此進(jìn)行一番實(shí)現(xiàn)流程的記錄,歡迎指摘.

①. wxml 頁面元素設(shè)計(jì)

作為引導(dǎo)界面,只需放置一張圖片即可,以我的代碼為例

//# 使用簡(jiǎn)單的實(shí)現(xiàn)方式,直接賦值一個(gè)圖片鏈接得了<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 文件實(shí)現(xiàn) “previewImage”方法

在對(duì)應(yīng)的 js 文件中,添加了如下的方法

 /** * 圖片預(yù)覽方法 * 此處注意的一點(diǎn)就是,調(diào)用 "wx.previewImage"時(shí),第二個(gè)參數(shù)要求為數(shù)組形式哦 * 當(dāng)然,做過圖片上傳功能的應(yīng)該會(huì)注意到,如果涉及到多張圖片預(yù)覽,圖片鏈接數(shù)組集合即為參數(shù) urls! */  previewImage: function(e) { var current = e.target.dataset.src; wx.previewImage({  current: current,  urls: [current] }) },

③. 實(shí)現(xiàn)效果

可以發(fā)現(xiàn),下圖中是沒有“識(shí)別圖中二維碼”的選項(xiàng)

如果發(fā)送給了好友或者自行保存后,在微信中打開的并長(zhǎng)按的效果如下:

出現(xiàn)問題:

1.服務(wù)器上發(fā)送過來的圖片路徑直接插進(jìn)ctx.drawImage 上,手機(jī)上顯示不了。

解決方案:利用wx.downloadFile 將圖片下載再保存好這個(gè)新圖片路徑,然后放到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出現(xiàn)在手機(jī)上的頂層,不管z-index設(shè)置多少層都沒有用。

解決方案:利用wx:if="{{isShowCav}}" 將canvas臨時(shí)隱藏,要用到的時(shí)候再顯示。不用再隱藏掉。

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那種居中;而是忽略了文字寬高的意思,所以你還是要給文字設(shè)置一個(gè)(x,y)坐標(biāo),只要將這個(gè)坐標(biāo)寫上canvas寬度的一半,它就可以實(shí)現(xiàn)居中了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 哈尔滨市| 岳普湖县| 扶风县| 白沙| 义乌市| 平南县| 洛阳市| 桑日县| 新安县| 英山县| 丰镇市| 蚌埠市| 安福县| 定南县| 剑河县| 萨嘎县| 宝丰县| 宁晋县| 华宁县| 盐源县| 汝城县| 方正县| 达日县| 涟水县| 新丰县| 勐海县| 古交市| 城口县| 新竹县| 青阳县| 潞西市| 杭州市| 白山市| 平舆县| 正宁县| 安远县| 宁乡县| 蕉岭县| 安图县| 定陶县| 香河县|