# 11.2 相机(Camera)
# 导入组件
该组件是在是原生的组件,无需导入组件。该组件从8.8版本开始生效
使用上比较简单,通过class设置对应的宽高即可使用。
原生提供基础的拍照功能,比如拍照,翻转摄像头,分辨率设定,打开手电筒,自动闪光灯等,前端在此基础上绘制页面即可。
初始数据从data的map里获取,更新也是一样
# 实例:
<template>
<div class="wrapper">
<midea-header title="mideaCameraView" ></midea-header>
<midea-camera-view ref="mycomponent" @takePhotoFinish="takePhotoFinish" class="progresscycle" :data="componentData">
</midea-camera-view>
<text class="btn" @click="takePicture">拍照</text>
<text class="btn" @click="isAutoOpenFlash">自动闪光灯</text>
<text class="btn" @click="changeCameraPosition">切换摄像头</text>
<text class="btn" @click="openTorch">打开手电筒</text>
<text class="btn" @click="closeTorch">关闭手电筒</text>
<image class="image" :src="imgSrc"></image>
</div>
</template>
<script>
export default {
data() {
return {
imgSrc: '',
componentData: {
resolution: 'default', //默认最高,支持480P,720P,1080P,4K,以及自定义格式: xxx*yyy ( 444*666 )
imageSaveFolder: 'PreViewPhotos', // 可以指定存储目录,默认图片存储在PreViewPhotos文件夹目录下 ,图片的命名规则是preImage + 下划线+ 时间戳。 支持绝对路径
autoFocus: true, //是否自动对焦
isUseFrontCamera: true, //true 启动页面 开启前置摄像头,false开启后置
isAutoOpenFlash: true, //是否自动开启闪光灯
isNeedBase64: true, //是否提供base64格式的图片数据
compressRatio: 0.6, //压缩系数,默认不压缩为1,范围0 ~ 1 8.8新增
needSaveToAlbum: true //是否保存到相册,默认是保存到相册 8.8新增
}
}
},
methods: {
takePicture(event) {
this.$refs.mycomponent.takePhoto()
},
//拍摄完成事件名 takePhotoFinish ,
// filePath 为图片路径key
// imgBase64 为图片Base64 key(默认是不传Base64图片数据。需要配置数据里面配置isNeedBase64:true)
takePhotoFinish(data) {
//加载base64图片
this.imgSrc = 'data:image/png;base64,' + data.imgBase64
// this.imgSrc = "file://local" + data.filePath //加载本地图片
},
isAutoOpenFlash(event) {
this.$refs.mycomponent.openFlashLight({
isAutoOpenFlash: true
})
},
changeCameraPosition(event) {
this.$refs.mycomponent.changeCameraPosition()
},
openTorch(event) {
this.$refs.mycomponent.openTorch({
openTorch: true
})
},
closeTorch(event) {
this.$refs.mycomponent.openTorch({
openTorch: false
})
}
}
}
</script>
<style scoped>
.wrapper {
flex-direction: column;
}
.progresscycle {
width: 500px;
height: 600px;
top: 100px;
margin-left: 100px;
justify-content: center;
align-items: center;
}
.btn {
width: 200px;
height: 70px;
top: 100px;
margin-left: 100px;
justify-content: center;
align-items: center;
text-align: center;
margin-top: 10px;
margin-left: 50px;
padding-top: 10px;
padding-bottom: 10px;
border-width: 2px;
border-style: solid;
color: #666666;
border-color: #dddddd;
background-color: #f5f5f5;
}
.image {
width: 300px;
height: 400px;
margin-left: 300px;
margin-top: 10px;
justify-content: center;
align-items: center;
background-color: #f5f5f5;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# 属性(data)
Prop | Type | Required | Default | Description |
---|---|---|---|---|
resolution | String | N | default | 默认最高,支持480P,720P,1080P,4K,以及自定义格式: xxxyyy ( 444666 ) |
imageSaveFolder | String | N | PreViewPhotos | 指定存储目录,默认图片存储在PreViewPhotos文件夹目录下 ,图片的命名规则是preImage + 下划线+ 时间戳。 支持绝对路径 |
autoFocus | Boolean | N | true | 是否自动对焦 |
isUseFrontCamera | Boolean | N | true | true 启动页面 开启前置摄像头,false开启后置 |
isAutoOpenFlash | Boolean | N | true | 是否自动开启闪光灯 |
isNeedBase64 | Booleanx | N | true | 是否提供base64格式的图片数据 |
compressRatio | Number | N | 1 | 压缩系数,默认不压缩为1,范围0 ~ 1, (8.8新增) |
needSaveToAlbum | Boolean | N | true | 是否保存到相册,默认是保存到相册 (8.8新增) |
# 方法
事件名称 | 参数类型 | 说明 |
---|---|---|
takePhoto | - | 拍照时触发。拍照成功会触发组件事件:takePhotoFinish,此事件里面带有图片路径。详细请见下面的事件文档。 |
openFlashLight | Object | 打开自动闪光灯模式:{ isAutoOpenFlash : true }, 关闭自动闪光灯模式:{ isAutoOpenFlash : false } |
changeCameraPosition | - | 切换摄像头:默认前置,点击会再前置和后置之间切换 |
openTorch | Object | 打开手电筒:{ openTorch : true }, 关闭手电筒:{ openTorch : false } |
# 事件
组件事件 | 描述 | 返回值 |
---|---|---|
takePhotoFinish | 拍摄完成,点击拍摄后触发。如何加载本地路径的图片和base64格式图片。 | { filePath: xxx, // 图片路径 imgBase64: xxx, // Base64格式图片数据。只有在初始配置了( isNeedBase64:true)才会提供此数据 } |