携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情
本次系列文章参与八月的更文活动,记录一个微信小程序从零到有的开发过程。本文为本系列第二十二篇:关于拍照功能的实现
在本次项目开发过程中,需要涉及到拍照识别的功能,微信官方是给我们提供了拍照和从相册中获取图片的API的,实现起来也是比较简单。
需求及UI
首先自定义拍照容器的样式,点击下方的拍照图标,即可拍摄图片,点击左侧相册图标进入系统相册后选择图片。
自定义拍照容器,及拍照功能
1.根据官方提供的camera组件,首先自定义拍照容器,根据自己项目的的ui样式,可对camera容器样式进行自定义,其中常用的属性如:device-position属性为摄像头朝向,flash属性表示相机闪关灯是否开启
wxml
<view class="camera" >
<camera device-position="back" flash="off"></camera>
</view>
2.实现拍照,点击拍摄图标后进入takePhoto方法。
使用wx.createCameraContext() 创建 camera上下文 CameraContext对象。
微信官方提供关于createCameraContext的API接口文档点此进入
使用takePhoto拍摄照片
takePhoto() {
const ctx = wx.createCameraContext();
var that = this;
ctx.takePhoto({
quality: 'high',
success: (res) => {
//res.tempImagePath表示获取到的图片地址
that.setData({ src: res.tempImagePath });
}
});
}
从相册中获取图片
原本,获取图片的接口可以使用官方提供的wx.chooseImage,不过从从基础库 2.21.0 开始,其接口就停止维护的。
那么我们就选择wx.chooseMedia,一样可以实现。以下为一些常用属性:
属性 | 默认值 | 说明 |
---|---|---|
count | 9 | 最多可以选择的文件个数 |
mediaType | ['image', 'video'] | 文件类型 |
sourceType | ['album', 'camera'] | 图片和视频选择的来源 |
sizeType | ['original', 'compressed'] | 仅对 mediaType 为 image 时有效,是否压缩所选文件 |
代码实现
choosePhoto(){
wx.chooseMedia({
count: 1,
mediaType:['image'],
sizeType: ['original', 'compressed'],
sourceType: ['album'],
success (res) {
const tempFilePaths = res.tempFiles[0].tempFilePath;
}
})
}