SmartParks_uniapp/utils/mediaSelector.README.md

144 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 媒体选择器工具类 (MediaSelector)
这是一个用于在uni-app项目中选择本地图片和视频的工具类提供了统一的接口和灵活的配置选项。
## 功能特点
- 支持选择图片、视频或让用户选择图片/视频
- 支持设置选择数量
- 支持设置是否压缩
- 支持图片裁剪
- 支持设置视频最大时长
- 支持设置使用的摄像头(前置/后置)
- 支持设置允许的文件扩展名
- 提供媒体预览功能
## 安装和使用
### 1. 导入工具类
```javascript
import MediaSelector, { MediaType } from '@/utils/mediaSelector';
```
### 2. 选择图片
```javascript
// 选择最多9张图片
const images = await MediaSelector.choose({
type: MediaType.IMAGE,
count: 9,
compressed: true,
crop: false
});
console.log('选择的图片:', images);
```
### 3. 选择视频
```javascript
// 选择最多1个视频
const videos = await MediaSelector.choose({
type: MediaType.VIDEO,
count: 1,
compressed: true,
videoMaxDuration: 60 // 最长60秒
});
console.log('选择的视频:', videos);
```
### 4. 选择图片或视频(用户可选择)
```javascript
// 让用户选择图片或视频
const media = await MediaSelector.choose({
type: MediaType.BOTH,
count: 5
});
console.log('选择的媒体:', media);
```
### 5. 预览媒体
```javascript
// 预览媒体(自动判断类型)
if (media.length > 0) {
MediaSelector.preview(media[0].path, media[0].type);
}
```
## API 文档
### MediaType 枚举
```javascript
export const MediaType = {
IMAGE: 'image', // 图片
VIDEO: 'video', // 视频
BOTH: 'both' // 图片和视频
};
```
### MediaSelector.choose(options)
选择媒体文件(图片或视频)。
#### 参数
| 参数名 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| options.type | string | 'image' | 媒体类型,可选值:'image'、'video'、'both' |
| options.count | number | 9 | 最大选择数量 |
| options.imageExtensions | Array<string> | ['png', 'jpg', 'jpeg', 'gif', 'webp'] | 图片扩展名 |
| options.videoExtensions | Array<string> | ['mp4', 'mov', '3gp', 'avi', 'rmvb', 'rm', 'flv', 'mkv'] | 视频扩展名 |
| options.compressed | boolean | true | 是否压缩所选文件 |
| options.crop | boolean | false | 是否裁剪(仅对图片有效) |
| options.videoMaxDuration | number | 60 | 拍摄视频最长拍摄时间,单位秒 |
| options.camera | string | 'back' | 使用的摄像头,可选值:'back'、'front' |
#### 返回值
返回一个Promise解析为选择的媒体文件数组。每个媒体文件对象包含以下属性
- **图片对象属性**
- path: 文件路径
- size: 文件大小(字节)
- name: 文件名
- type: 媒体类型('image'
- extension: 文件扩展名
- createTime: 创建时间戳
- **视频对象属性**
- path: 文件路径
- size: 文件大小(字节)
- duration: 视频时长(秒)
- width: 视频宽度
- height: 视频高度
- name: 文件名
- type: 媒体类型('video'
- extension: 文件扩展名
- createTime: 创建时间戳
### MediaSelector.preview(path, type)
预览媒体文件。
#### 参数
| 参数名 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| path | string | - | 文件路径 |
| type | string | 自动判断 | 媒体类型,可选值:'image'、'video',默认根据文件扩展名自动判断 |
## 注意事项
1. 由于uni.chooseVideo一次只能选择一个视频当设置count>1时工具类会引导用户多次选择。
2. 视频预览功能需要一个视频播放页面,默认路径为`/pages/common/video-player`,如果您的项目中没有此页面,请自行创建或修改预览方法。
3. 在某些平台上,部分功能可能受到限制,请根据实际情况调整使用方式。
## 示例代码
完整的使用示例请参考 `mediaSelector.example.js` 文件。