微信小程序拍照和攝像功能實(shí)現(xiàn)方法示例
本文實(shí)例講述了微信小程序拍照和攝像功能實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
拍照
原先的想法是使用微信的camera組件來實(shí)現(xiàn),并且模擬發(fā)朋友圈的樣子來進(jìn)行相機(jī)的設(shè)置,其實(shí)就是將camera組件的大小設(shè)置成根屏幕一樣大,并在上面使用一個(gè)cover-image組件來給用戶進(jìn)行點(diǎn)擊,可是實(shí)際上的情況是第一,cover-image組件有時(shí)候會(huì)消失,第二,整個(gè)流程實(shí)現(xiàn)起來很僵硬,頁面跳轉(zhuǎn)也是卡的要死,后來無意間發(fā)現(xiàn)了另一個(gè)API:wx.chooseImage
,這個(gè)API會(huì)自己去調(diào)用相機(jī)和相冊(cè),之后的工作完全交給底層去實(shí)現(xiàn),簡(jiǎn)直是簡(jiǎn)單到?jīng)]朋友:
// 拍照功能 getLocalImage:function(){ var that=this; wx.chooseImage({ count:1, success:function(res){ // 這里無論用戶是從相冊(cè)選擇還是直接用相機(jī)拍攝,拍攝完成后的圖片臨時(shí)路徑都會(huì)傳遞進(jìn)來 app.startOperating("保存中") var filePath=res.tempFilePaths[0]; var session_key=wx.getStorageSync('session_key'); // 這里順道展示一下如何將上傳上來的文件返回給后端,就是調(diào)用wx.uploadFile函數(shù) wx.uploadFile({ url: app.globalData.url+'/home/upload/uploadFile/session_key/'+session_key, filePath: filePath, name: 'file', success:function(res){ app.stopOperating(); // 下面的處理其實(shí)是跟我自己的業(yè)務(wù)邏輯有關(guān) var data=JSON.parse(res.data); if(parseInt(data.status)===1){ app.showSuccess('文件保存成功'); }else{ app.showError("文件保存失敗"); } } }) }, fail:function(error){ console.error("調(diào)用本地相冊(cè)文件時(shí)出錯(cuò)") console.warn(error) }, complete:function(){ } }) },
其中封裝在app.js中的函數(shù)可以看我這篇文章:微信小程序一些簡(jiǎn)易小函數(shù)總結(jié)。
攝影
其實(shí)跟上面的原理是一樣的,對(duì)應(yīng)的API就是wx.chooseVideo
,其中可以設(shè)置拍攝時(shí)間,用戶拍攝結(jié)束以及用戶拍攝時(shí)間超時(shí)等,都會(huì)調(diào)用success的回調(diào)函數(shù),所以又是可以安心處理接下來的業(yè)務(wù)流程,而不用需要調(diào)用camera組件。
// 攝像功能 getLocalVideo:function(){ var that=this; var session_key=wx.getStorageSync('session_key'); wx.chooseVideo({ maxDuration:10, success:function(res1){ app.startOperating("上傳中") // 這個(gè)就是最終拍攝視頻的臨時(shí)路徑了 var tempFilePath=res1.tempFilePath; }, fail:function(){ console.error("獲取本地視頻時(shí)出錯(cuò)"); } }) },
實(shí)現(xiàn)起來也是很簡(jiǎn)單,但是有一個(gè)問題就是沒有辦法像調(diào)用camera組件一樣獲取視頻的縮略圖,這是現(xiàn)在唯一的缺陷。但是總體來說,比起調(diào)用camera組件,這樣實(shí)現(xiàn)起來的確簡(jiǎn)單了很多。
希望本文所述對(duì)大家微信小程序開發(fā)有所幫助。
相關(guān)文章
ionic實(shí)現(xiàn)可滑動(dòng)的tab選項(xiàng)卡切換效果
這篇文章主要為大家詳細(xì)介紹了ionic實(shí)現(xiàn)可滑動(dòng)的tab選項(xiàng)卡切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08window.print()局部打印三種方式(小結(jié))
本文主要介紹了window.print()局部打印三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06JavaScript函數(shù)增強(qiáng)以及額外知識(shí)
函數(shù)就是封裝了一段可以被重復(fù)執(zhí)行調(diào)用的代碼塊,下面這篇文章主要給大家介紹了關(guān)于JavaScript函數(shù)增強(qiáng)以及額外知識(shí)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06基于JS+Canvas的lucky-canvas?抽獎(jiǎng)功能
一個(gè)基于?Js?+?Canvas?的大轉(zhuǎn)盤和九宮格和老虎機(jī)抽獎(jiǎng),使用lucky-canvas?功能可以自由配置,多端適配的特點(diǎn),本文通過實(shí)例代碼給大家詳細(xì)介紹抽獎(jiǎng)方法,感興趣的朋友一起看看吧2022-06-06