小程序圖片長按識別功能的實現(xiàn)方法
背景
今天,做的小程序項目要求,個人中心的客服圖片在用戶長按時可以識別其二維碼
在百度無果,參考小程序官方文檔后,發(fā)現(xiàn):
1.文檔中有一句提示:
"image組件中二維碼/小程序碼圖片不支持長按識別,僅在 wx.previewImage 中支持長按識別"
2.即便實現(xiàn)了 “wx.previewImage” 效果,但依舊是不支持二維碼識別的
附錄文檔位置:小程序圖片長按識別
代碼設(shè)計
好在這也是一個不錯的知識點,在此進行一番實現(xiàn)流程的記錄,歡迎指摘.
①. wxml 頁面元素設(shè)計
作為引導界面,只需放置一張圖片即可,以我的代碼為例
//# 使用簡單的實現(xiàn)方式,直接賦值一個圖片鏈接得了 <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 文件實現(xiàn) “previewImage”方法
在對應的 js 文件中,添加了如下的方法
/**
* 圖片預覽方法
* 此處注意的一點就是,調(diào)用 "wx.previewImage"時,第二個參數(shù)要求為數(shù)組形式哦
* 當然,做過圖片上傳功能的應該會注意到,如果涉及到多張圖片預覽,圖片鏈接數(shù)組集合即為參數(shù) urls!
*/
previewImage: function(e) {
var current = e.target.dataset.src;
wx.previewImage({
current: current,
urls: [current]
})
},
③. 實現(xiàn)效果
可以發(fā)現(xiàn),下圖中是沒有“識別圖中二維碼”的選項

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

出現(xiàn)問題:
1.服務(wù)器上發(fā)送過來的圖片路徑直接插進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出現(xiàn)在手機上的頂層,不管z-index設(shè)置多少層都沒有用。
解決方案:利用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那種居中;而是忽略了文字寬高的意思,所以你還是要給文字設(shè)置一個(x,y)坐標,只要將這個坐標寫上canvas寬度的一半,它就可以實現(xiàn)居中了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
兩種JavaScript的AES加密方式(可與Java相互加解密)
這篇文章主要介紹了兩種JavaScript的AES加密方式(可與Java相互加解密) 的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08
關(guān)于uniapp中onReachBottomDistance屬性的使用
這篇文章主要介紹了關(guān)于uniapp中onReachBottomDistance屬性的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
用js+iframe形成頁面的一種遮罩效果的具體實現(xiàn)
用js形成頁面的一種遮罩效果,選擇想要進行遮罩的窗口,在這里想要遮罩的是一個iframe窗口,具體的實現(xiàn)如下,感興趣的朋友可以參參考下2013-12-12
JavaScript實現(xiàn)微信小程序打卡時鐘項目實例
這篇文章主要為大家介紹了JavaScript實現(xiàn)微信小程序打卡時鐘項目實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
JS如何遍歷帶有子集的數(shù)組集合(嵌套數(shù)組)
這篇文章主要介紹了JS如何遍歷帶有子集的數(shù)組集合(嵌套數(shù)組)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06

