@capacitor/camera
Camera API 提供使用相机拍照或从相册中选择现有照片的功能。
安装
npm install @capacitor/camera
npx cap sync
iOS
iOS 需要在 Info.plist 中添加并填写以下使用说明:
NSCameraUsageDescription(Privacy - Camera Usage Description)NSPhotoLibraryAddUsageDescription(Privacy - Photo Library Additions Usage Description)NSPhotoLibraryUsageDescription(Privacy - Photo Library Usage Description)
阅读 iOS 指南 中的 配置 Info.plist 以获取有关在 Xcode 中设置 iOS 权限的更多信息。
Android
此 API 需要在 AndroidManifest.xml 中添加以下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
存储权限用于读取/保存照片文件。
阅读 Android 指南 中的 设置权限 以获取有关设置 Android 权限的更多信息。
此外,由于 Camera API 会启动一个单独的 Activity 来处理拍照,您应该在 App 插件中监听 appRestoredResult,以处理在 Activity 运行时您的应用被操作系统终止时发送的任何相机数据。
变量
本插件将使用以下项目变量(在应用的 variables.gradle 文件中定义):
$androidxExifInterfaceVersion:androidx.exifinterface:exifinterface的版本(默认值:1.3.2)$androidxMaterialVersion:com.google.android.material:material的版本(默认值:1.3.0)
PWA 说明
Camera 插件需要 PWA Elements 才能正常工作。
示例
import { Camera, CameraResultType } from '@capacitor/camera';
const takePicture = async () => {
const image = await Camera.getPhoto({
quality: 90,
allowEditing: true,
resultType: CameraResultType.Uri
});
// image.webPath 将包含一个可以设置为图像 src 的路径。
// 您可以使用 image.path 访问原始文件,该路径可以
// 传递给 Filesystem API 以读取图像的原始数据,
// 如果需要(或者将 resultType: CameraResultType.Base64 传递给 getPhoto)
var imageUrl = image.webPath;
// 现在可以将其设置为图像的 src
imageElement.src = imageUrl;
};
API
getPhoto(...)
getPhoto(options: ImageOptions) => Promise<Photo>
提示用户从相册中选择照片,或使用相机拍摄新照片。
| 参数 | 类型 |
|---|---|
options | |
返回:
Promise<Photo>
起始版本: 1.0.0
pickImages(...)
pickImages(options: GalleryImageOptions) => Promise<GalleryPhotos>
允许用户从相册中选择多张图片。 在 iOS 13 及更早版本上,仅允许选择一张图片。
| 参数 | 类型 |
|---|---|
options | |
返回:
Promise<GalleryPhotos>
起始版本: 1.2.0
checkPermissions()
checkPermissions() => Promise<PermissionStatus>
检查相机和相册权限。
返回:
Promise<PermissionStatus>
起始版本: 1.0.0
requestPermissions(...)
requestPermissions(permissions?: CameraPluginPermissions | undefined) => Promise<PermissionStatus>
请求相机和相册权限。
| 参数 | 类型 |
|---|---|
permissions | |
返回:
Promise<PermissionStatus>
起始版本: 1.0.0
接口
Photo
| 属性 | 类型 | 描述 | 起始版本 |
|---|---|---|---|
base64String | string | 图像的 base64 编码字符串表示,如果使用 CameraResultType.Base64。 | 1.0.0 |
dataUrl | string | 以 'data:image/jpeg;base64,' 开头的 URL 和图像的 base64 编码字符串表示,如果使用 CameraResultType.DataUrl。 | 1.0.0 |
path | string | 如果使用 CameraResultType.Uri,路径将包含一个完整的、平台特定的文件 URL,后续可以使用 Filesystem API 读取。 | 1.0.0 |
webPath | string | webPath 返回一个可用于设置图像 src 属性的路径,以实现高效加载和渲染。 | 1.0.0 |
exif | any | 从图像中检索到的 Exif 数据(如果有)。 | 1.0.0 |
format | string | 图像的格式,例如:jpeg、png、gif。iOS 和 Android 仅支持 jpeg。Web 支持 jpeg 和 png。gif 仅在文件输入时支持。 | 1.0.0 |
saved | boolean | 图像是否已保存到相册。在 Android 和 iOS 上,如果用户未授予所需权限,保存到相册可能会失败。在 Web 上没有相册,因此始终返回 false。 | 1.1.0 |
ImageOptions
| 属性 | 类型 | 描述 | 默认值 | 起始版本 |
|---|---|---|---|---|
quality | number | 返回的 JPEG 图像质量,范围 0-100。 | 1.0.0 | |
allowEditing | boolean | 是否允许用户裁剪或进行小幅编辑(平台特定的)。在 iOS 14+ 上,仅支持 CameraSource.Camera,不支持 CameraSource.Photos。 | 1.0.0 | |
resultType | | 数据的返回方式。目前仅支持 'Base64'、'DataUrl' 或 'Uri' |