Camera
相机API允许用户从相册选取照片或拍摄新照片。在iOS上使用UIImagePickerController
,在Android上默认通过系统相机应用处理。
iOS注意事项
iOS需要在Info.plist
中添加以下使用说明:
名称: Privacy - Camera Usage Description
键名: NSCameraUsageDescription
名称: Privacy - Photo Library Additions Usage Description
键名: NSPhotoLibraryAddUsageDescription
名称: Privacy - Photo Library Usage Description
键名: NSPhotoLibraryUsageDescription
更多关于在Xcode中设置iOS 权限的信息,请参阅iOS指南中的设置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指南中的设置Android权限
此外,由于相机API会启动单独的Activity来处理拍照,您应该监听App
插件中的appRestoredResult
,以便在Activity运行时应用被操作系统终止的情况下处理任何相机数据。
PWA注意事项
相机插件需要PWA Elements支持才能正常工作。
示例
import { Plugins, CameraResultType } from '@capacitor/core';
const { Camera } = Plugins;
async takePicture() {
const image = await Camera.getPhoto({
quality: 90,
allowEditing: true,
resultType: CameraResultType.Uri
});
// image.webPath包含可用于设置图像src的路径
// 您可以通过image.path访问原始文件,该路径可以
// 传递给Filesystem API以读取图像的原始数据
// (如果需要,也可以将resultType设为CameraResultType.Base64)
var imageUrl = image.webPath;
// 现在可以将其设置为图像的src
imageElement.src = imageUrl;
}
示例教程
API
getPhoto(...)
getPhoto(options: CameraOptions) => Promise<CameraPhoto>
提示用户从相册选择照片或使用相机拍摄新照片
参数 | 类型 |
---|---|
options |
|
返回值:
Promise<CameraPhoto>
Interfaces
CameraPhoto
属性 | 类型 | 说明 |
---|---|---|
base64String | string | 使用CameraResultType.Base64时的base64编码字符串 |
dataUrl | string | 使用CameraResultType.DataUrl时的'data:image/jpeg;base64,'开头的URL和base64编码字符串 |
path | string | 使用CameraResultType.Uri时的完整平台特定文件URL,可通过Filesystem API读取 |
webPath | string | webPath返回可用于设置图像src属性的路径,以实现高效加载和渲染 |
exif | any | 从图像中检索的Exif数据(如果有) |
format | string | 图像格式,如jpeg、png、gif。iOS和Android仅支持jpeg。Web支持jpeg和png。仅在使用文件 输入时支持gif |
CameraOptions
属性 | 类型 | 说明 |
---|---|---|
quality | number | JPEG图像质量,0-100 |
allowEditing | boolean | 是否允许用户裁剪或进行小幅编辑(平台特定) |
resultType |
| 数据返回方式。目前仅支持'Base64'、'DataUrl'或'Uri' |
saveToGallery | boolean | 是否将照片保存到相册。如果照片是从相册选取的,则仅在编辑后才会保存。默认: false |
width | number | 保存图像的宽度 |
height | number | 保存图像的高度 |
preserveAspectRatio | boolean | 是否保持图像宽高比。如果为true,则width和height将作为最大值并保持宽高比。仅当同时提供width和height时相关。当只提供width或height时,宽高比始终会保持(此选项无效)。未来主要版本可能会将此行为设为默认,并可能完全移除此选项。默认: false |
correctOrientation | boolean | 是否自动将图像"向上"旋转以校正纵向模式下的方向 默认: true |
source |
| 照片来源。默认提示用户选择相册或拍照。默认: CameraSource.Prompt |
direction |
| 仅iOS和Web: 相机方向。默认: CameraDirection.Rear |
presentationStyle | "fullscreen" | "popover" | 仅iOS: 相机的呈现样式。默认为全屏。 |
webUseInput | boolean | 仅Web: 使用PWA Element体验还是文件输入。默认使用已安装的PWA Elements,若未安装则回退到文件输入。要始终使用文件输入,设为true 。了解更多关于PWA Elements: https://capacitorjs.com/docs/pwa-elements |
promptLabelHeader | string | 如果使用CameraSource.Prompt,可更改提示标签。默认: promptLabelHeader : '照片' // 仅iOS promptLabelCancel : '取消' // 仅iOS promptLabelPhoto : '从相册选择' promptLabelPicture : '拍照' |
promptLabelCancel | string | |
promptLabelPhoto | string | |
promptLabelPicture | string |
Enums
CameraResultType
成员 | 值 |
---|---|
Uri | "uri" |
Base64 | "base64" |
DataUrl | "dataUrl" |
CameraSource
成员 | 值 |
---|---|
Prompt | "PROMPT" |
Camera | "CAMERA" |
Photos | "PHOTOS" |
CameraDirection
成员 | 值 |
---|---|
Rear | "REAR" |
Front | "FRONT" |