# 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

# 属性(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)才会提供此数据
}
Last Updated: 11/1/2022, 4:01:00 PM