欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序調(diào)用攝像頭隱藏式拍照功能

 更新時間:2018年08月22日 11:04:23   作者:離殤一曲終成夢  
這篇文章主要介紹了微信小程序調(diào)用攝像頭隱藏式拍照功能,本文給大家?guī)砹私鉀Q方法、官網(wǎng)代碼和小編寫的比較完整代碼,需要的朋友可以參考下

微信小程序最近非?;馃幔【幾罱隽艘粋€新項目,使用小程序開發(fā)考試系統(tǒng),在使用App參加考試的時候調(diào)用攝像頭抓拍用戶是否作弊,在開發(fā)過程中遇到點問題,下面小編把問題描述和解決方法分享給大家,具體內(nèi)容如下:

問題

今天小編遇到了這么個問題,就是在用戶使用App參加考試的時候調(diào)用攝像頭抓拍用戶是否作弊,其實這也沒什么,關(guān)鍵在于不能打擾用戶考試,不能被用戶發(fā)現(xiàn)什么時候抓拍的,也不能給用戶查看圖片,只有考完是后才能查看。這系統(tǒng)相當于考駕照時的上機答題部分。開始經(jīng)理的要求是調(diào)用小程序外部的手機拍攝功能,這要可把我嚇的夠嗆。

 解決方法

遇到這種問題肯定要先找下官網(wǎng)的幫助文檔,于是找到了調(diào)用攝像頭的這么一個模塊

相機組件控制 (wx.createCameraContext)

說明:

創(chuàng)建并返回 camera 上下文 cameraContext 對象,cameraContext 與頁面的 camera 組件綁定,一個頁面只能有一個camera,通過它可以操作對應(yīng)的 <camera/> 組件。 在自定義組件下,第一個參數(shù)傳入組件實例this,以操作組件內(nèi) <camera/> 組件

cameraContext 對象的方法列表:

takePhoto OBJECT 拍照,可指定質(zhì)量,成功則返回圖片
startRecord OBJECT 開始錄像
stopRecord OBJECT 結(jié)束錄像,成功則返回封面與視頻

takePhoto 的 OBJECT 參數(shù)列表:

quality String 成像質(zhì)量,值為high, normal, low,默認normal
success Function 接口調(diào)用成功的回調(diào)函數(shù) ,res = { tempImagePath }
fail Function 接口調(diào)用失敗的回調(diào)函數(shù)
complete Function 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

這不是有個拍照功能的模塊嗎,于是去找了一下官網(wǎng)所給的代碼研究了一下:

官網(wǎng)代碼:

wxml代碼:

<view class="page-body">
<view class="page-body-wrapper">
<camera device-position="back" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera>
<view class="btn-area">
<button type="primary" bindtap="takePhoto">拍照</button>
</view>
<view class="btn-area">
<button type="primary" bindtap="startRecord">開始錄像</button>
</view>
<view class="btn-area">
<button type="primary" bindtap="stopRecord">結(jié)束錄像</button>
</view>
<view class="preview-tips">預(yù)覽</view>
<image wx:if="{{src}}" mode="widthFix" src="{{src}}"></image>
<video wx:if="{{videoSrc}}" class="video" src="{{videoSrc}}"></video>
</view>
</view>

js代碼:

Page({
onLoad() {
  this.ctx = wx.createCameraContext()
},
 
takePhoto() {
  this.ctx.takePhoto({
    quality: 'high',
    success: (res) => {
      this.setData({
        src: res.tempImagePath
      })
    }
  })
},
 
startRecord() {
  this.ctx.startRecord({
    success: (res) => {
      console.log('startRecord')
    }
  })
},
 
stopRecord() {
  this.ctx.stopRecord({
    success: (res) => {
      this.setData({
        src: res.tempThumbPath,
        videoSrc: res.tempVideoPath
      })
    }
  })
},
error(e) {
  console.log(e.detail)
}
})

wxcss代碼:

.preview-tips {
  margin: 20rpx 0;
}
.video {
  margin: 50px auto;
  width: 100%;
  height: 300px;
}

這代碼修改還是可以的只是不是我想要的那種,我要的是隱藏沒有攝像頭的,和自動抓拍功能的,

官網(wǎng)代碼分析:

<camera device-position="back" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera>

這是攝像頭模塊,這模塊只要不是隱藏,寬高不為0,都可以正常使用拍照功能

this.ctx = wx.createCameraContext()

這是獲取攝像頭圖像功能 

takePhoto() {
  this.ctx.takePhoto({
    quality: 'high',
    success: (res) => {
      this.setData({
        src: res.tempImagePath
      })
    }
  })
},

這是拍照功能,并沒有和攝像頭一起使用,只要創(chuàng)建了攝像頭并不隱藏的情況下可以單獨調(diào)用 

就這幾行代碼就差不多可以實現(xiàn)我想要的功能了,拍照功能單獨用定時器來調(diào)用,只差一個隱藏攝像頭的功能了,在官網(wǎng)上找找。有沒有新發(fā)現(xiàn)......

在組件里發(fā)現(xiàn)有這么一個模塊叫 

cover-view

描述:覆蓋在原生組件之上的文本視圖,可覆蓋的原生組件包括map、video、canvas、camera、live-player、live-pusher,只支持嵌套cover-view、cover-image,可在cover-view中使用button。 

這模塊的意思是說cover-view 可以覆蓋掉camera這控件

camera這模塊也是這么個奇葩的存在,你用z-index層次不管多大都無法覆蓋掉,這里就要用到cover-view組件了

一開始我也不知道怎么用,于是上網(wǎng)查了查,博友們都是這么說的 cover-view 嵌套到 camera 里面去就行了,

也就是這么個意思

<camera>
  <cover-view></cover-view>
</camera> 

這樣效果是可以但太占空間了 于是我就把<camera>寬高設(shè)成了

width: 10rpx;
height: 14rpx; 

只要不隱藏不為0都是可以的拍照的清晰度沒有變化只有寬高比例有變化

同樣<cover-view>也要把攝像機鋪滿,背景色調(diào)為周圍一樣的顏色這就相當于隱藏攝像頭功能了,再加上定時器抓拍就完成了這項功能。 

完成代碼:

wxml代碼:

<view class="page-body">
<view class="page-body-wrapper">
<camera device-position="front" flash="off" binderror="error" class="camera" bindstop='bindstop' binderror='binderror'>
<cover-view class='border_writh'></cover-view>
</camera>
<view class="btn-area">
<button type="primary" bindtap="stoptime">停止</button>
</view>
<view class="preview-tips">預(yù)覽</view>
<image wx:if="{{src}}" mode="widthFix" src="{{src}}"></image>
</view>
</view>

wxss代碼:

.preview-tips {
  margin: 20rpx 0;
}
.video {
  margin: 50px auto;
  width: 100%;
  height: 300rpx;
}
.border_writh{
  width: 30rpx;
  height: 30rpx;
  background-color:#1aad19;
}
.camera{
  position: absolute;
  top: 5rpx;
  left: 5rpx;
  width: 10rpx;
  height: 14rpx;
}

js代碼:

var time = null;
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
},
onLoad() {
},
//定時器拍照
setTime: function() {
  let that = this
  let ctx = wx.createCameraContext()
  time = setInterval(function() {
    if (Math.round(Math.random()) == 1) {
      console.log('拍照')
      //拍照
      ctx.takePhoto({
        quality: 'high',
        success: (res) => {
          console.log(res.tempImagePath)
          that.setData({
            src: res.tempImagePath
          })
          that.localhostimgesupdata(res.tempImagePath)
        }
      })
    }
  }, 1000 * 10) //循環(huán)間隔 單位ms
},
//圖片上傳
localhostimgesupdata: function(imgPath) {
  console.log('圖片上傳')
  wx.uploadFile({
    url: '', /圖片上傳服務(wù)器真實的接口地址
    filePath: imgPath,
    name: 'imgFile',
    success: function(res) {
      wx.showToast({
        title: '圖片上傳成功',
        icon: 'success',
        duration: 2000
      })
    }
  })
},
stoptime: function() {
  console.log('定時停止')
  clearInterval(time)
},
bindstop: function() {
  console.log('非正常停止')
},
binderror: function() {
  console.log('用戶拒絕授權(quán)')
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面顯示
*/
onShow: function() {
  console.log('顯示')
  //定時器
  this.setTime();
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面隱藏
*/
onHide: function() {
  console.log('隱藏')
  clearInterval(time)
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面卸載
*/
onUnload: function() {
  console.log('卸載')
  clearInterval(time)
},
})

總結(jié)

以上所述是小編給大家介紹的微信小程序調(diào)用攝像頭隱藏式拍照功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • JS實現(xiàn)可縮放、拖動、關(guān)閉和最小化的浮動窗口完整實例

    JS實現(xiàn)可縮放、拖動、關(guān)閉和最小化的浮動窗口完整實例

    這篇文章主要介紹了JS實現(xiàn)可縮放、拖動、關(guān)閉和最小化的浮動窗口的方法,實例分析了javascript操作窗口層的技巧,需要的朋友可以參考下
    2015-03-03
  • JS實現(xiàn)簡單的抽獎轉(zhuǎn)盤效果示例

    JS實現(xiàn)簡單的抽獎轉(zhuǎn)盤效果示例

    這篇文章主要介紹了JS實現(xiàn)簡單的抽獎轉(zhuǎn)盤效果,涉及javascript數(shù)值計算與頁面元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • js get和post請求實現(xiàn)代碼解析

    js get和post請求實現(xiàn)代碼解析

    這篇文章主要介紹了js get和post實現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • javascript中的注釋使用與注意事項小結(jié)

    javascript中的注釋使用與注意事項小結(jié)

    在javascript中有兩種注釋方式,單行注釋與多行注釋。
    2011-09-09
  • js實現(xiàn)3d懸浮效果

    js實現(xiàn)3d懸浮效果

    本文主要分享了js實現(xiàn)3d懸浮效果的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 微信小程序父子組件通信詳細介紹

    微信小程序父子組件通信詳細介紹

    這篇文章主要介紹了小程序中父子組件通信詳解,在父組件中,為子組件添加屬性數(shù)據(jù),即可實現(xiàn)父組件向子組件通信,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-11-11
  • 微信小程序阻止小程序返回的兩種方法

    微信小程序阻止小程序返回的兩種方法

    這篇文章主要給大家介紹了關(guān)于微信小程序阻止小程序返回的兩種方法,分別是通過wx.enableAlertBeforeUnload和page-container,兩種方法都給出了詳細的實例,需要的朋友可以參考下
    2023-04-04
  • JavaScript 變量作用域分析

    JavaScript 變量作用域分析

    變量作用域是程序中定義這個變量的區(qū)域。先貼一段代碼,如果讀者對代碼的輸出并不感到困惑就不用往下面讀了。
    2011-07-07
  • uniapp分包(小程序分包)處理圖文詳解

    uniapp分包(小程序分包)處理圖文詳解

    小程序上傳的時候,主包不能超過2M,如果超出,則會上傳失敗,這時候就需要把界面進行分包,下面這篇文章主要給大家介紹了關(guān)于uniapp分包(小程序分包)處理的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • JS實現(xiàn)帶動畫的回到頂部效果

    JS實現(xiàn)帶動畫的回到頂部效果

    這篇文章主要為大家詳細 介紹了JS實現(xiàn)帶動畫的回到頂部效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評論