{"_id":"@capacitor-ohos/camera","_rev":"4-198e38ce5d7b59f372fbbad17957aa82","name":"@capacitor-ohos/camera","dist-tags":{"latest":"8.0.2"},"versions":{"8.0.1":{"name":"@capacitor-ohos/camera","version":"8.0.1","keywords":["capacitor","plugin","native"],"author":{"url":"Group","name":"Huawei Device Co., Ltd and iSoftStone Information Technology"},"license":"MIT","_id":"@capacitor-ohos/camera@8.0.1","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-camera/issues"},"dist":{"shasum":"b3e0bb8816a519b36e99f31e4eee8d357c04f03a","tarball":"https://registry.npmjs.org/@capacitor-ohos/camera/-/camera-8.0.1.tgz","fileCount":18,"integrity":"sha512-0C3KOe/8SOjz7jthpCmGx22oYh4GL3NoR+kKNic1IatMksjgbkYcOx8QXAUjGzA8bBqVTEO9Qzcjrqyq/d38Sg==","signatures":[{"sig":"MEUCIGWLoXX6/2yYF7i4aNC5dUQ1PnOMMqijJTiWWU1Y2vyVAiEA49UHhdUdpZjykqo/YjV+CdXD3EVPyDi0M3JiZuIkqxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136802},"gitHead":"1c760c08ad57e1b36ae5e7f5683cf089009b233d","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"capacitor":{"id":"@capacitor/camera","platforms":["openharmony"]},"repository":{"url":"gitcode:CPF-Ionic/capacitor-camera","type":"git"},"_npmVersion":"10.5.1","description":"The Camera API provides the ability to take a photo with the camera or choose an existing one from the photo album.","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/camera_8.0.1_1777539340546_0.8373068320172135","host":"s3://npm-registry-packages-npm-production"}},"8.0.2":{"name":"@capacitor-ohos/camera","version":"8.0.2","description":"The Camera API provides the ability to take a photo with the camera or choose an existing one from the photo album.","capacitor":{"id":"@capacitor/camera","platforms":["openharmony"]},"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-camera"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-camera/issues"},"keywords":["capacitor","plugin","native"],"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","_id":"@capacitor-ohos/camera@8.0.2","gitHead":"a9a911d6a19f226726fe8a1663dc36fa5e74dee7","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-elDrMrJJHOHspFulwY2Wv5MJcGqCzzHpWV4N2Zo6pHZtq5H+grf4gxCEtRow4OkHbMuWwGiT3hmDLIdkFvkCag==","shasum":"c810f024adadf38759c71ec9591507bb83de59b6","tarball":"https://registry.npmjs.org/@capacitor-ohos/camera/-/camera-8.0.2.tgz","fileCount":18,"unpackedSize":136826,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCiCD3cypdGH6hz23T3xJ2uLwMrpv6epKtaAHhe1rzauQIgL8EmI57usQiGB1mePYU7IHnSbOlOUpPrXNMbZdIfQaA="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/camera_8.0.2_1784789557821_0.7673233377784765"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T08:55:40.423Z","modified":"2026-07-23T06:52:38.089Z","8.0.0-beta.2":"2026-04-16T08:18:02.161Z","8.0.1":"2026-04-30T08:55:40.735Z","8.0.2":"2026-07-23T06:52:37.952Z"},"bugs":{"url":"https://gitcode.com/CPF-Ionic/capacitor-camera/issues"},"author":{"name":"Huawei Device Co., Ltd and iSoftStone Information Technology","url":"Group"},"license":"MIT","keywords":["capacitor","plugin","native"],"repository":{"type":"git","url":"gitcode:CPF-Ionic/capacitor-camera"},"description":"The Camera API provides the ability to take a photo with the camera or choose an existing one from the photo album.","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"readme":"# <center>@capacitor/camera</center>\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [@capacitor/camera@8.0.0](https://www.npmjs.com/package/@capacitor/camera/v/8.0.0) 开发。\r\n\r\n## 简介\r\n\r\n@capacitor/camera是capacitor生态系统中的核心插件，提供相机拍摄照片、从相册选择已有图片的功能，同时支持权限校验、图片参数配置等能力，为跨平台应用开发提供设备差异化适配能力。插件兼容Android、iOS等主流移动平台及浏览器环境，本文档仅说明在OpenHarmony环境下的使用情况。\r\n\r\nAPI 可实现：相机拍摄照片或从相册中选择已有的照片。\r\n\r\n## 支持平台\r\n\r\n- **OpenHarmony**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过命令行或手动引入即可快速安装插件，支持从npm仓库获取。\r\n\r\n### 命令行安装（推荐）\r\n\r\n安装hionic CLI：\r\n\r\n```bash\r\nnpm install -g hionic\r\n```\r\n\r\n以下两种方式中**任选其一**即可，无需重复操作：\r\n\r\nnpm安装：\r\n\r\n```bash\r\n# 安装插件\r\nnpm install @capacitor/camera\r\n\r\n# 同步插件\r\nhionic sync openharmony\r\n```\r\n\r\nhionic CLI安装：\r\n\r\n```bash\r\nhionic plugin add @capacitor/camera\r\n```\r\n\r\n### 手动引入安装\r\n\r\n根据插件源码中 `plugin.xml` 配置在项目中引入插件：\r\n\r\n#### 1. 添加插件配置\r\n\r\n根据 `plugin.xml` 的 `config-json` 项，通过 `target` 字段找到 `entry` 模块中 `capacitor.plugins.json` 文件，并根据 `param`\r\n标签添加配置如下：\r\n\r\n```json\r\n{\r\n  \"pkg\": \"@capacitor/camera\",\r\n  \"classpath\": \"Camera\"\r\n}\r\n```\r\n\r\n#### 2. 修改 CMake 配置\r\n\r\n根据 `plugin.xml` 的 `CMakeLists` 项，通过 `modules-name` 字段找到模块 `capacitor`，路径为 `target` 字段的\r\n`CMakeLists.txt` 文件，并根据 `param` 标签添加 `add_subdirectory` 和 `target_link_libraries` 如下：\r\n\r\n```cmake\r\n#START_ADD_SUBDIRECTORY\r\n// ...\r\nadd_subdirectory(Camera)\r\n// ...\r\n#END_ADD_SUBDIRECTORY\r\n\r\n// ...\r\n\r\ntarget_link_libraries(capacitor PUBLIC\r\n  \"-Wl,--whole-archive\"\r\n  // ...\r\n  Camera\r\n  // ...\r\n  \"-Wl,--no-whole-archive\"\r\n)\r\n```\r\n\r\n#### 3. 复制源码文件\r\n\r\n根据 `plugin.xml` 的 `source-file` 项，根据 `src` 字段找到需要复制的文件，并根据 `modules-name` 字段和 `target-dir`\r\n字段找到文件复制的具体模块和目录：\r\n\r\n将源码中src/main/cpp/Camera目录下的Camera.h、Camera.cpp、CMakeLists.txt文件引入到capacitor模块中src/main/cpp/Camera目录下。\r\n\r\n将源码中src/main/ets/components/ImageCompress目录下的CameraAction.ets、ErrorCode.ets、ExifInfo.ets、ImageCompressEx.ets、ImageInfo.ets文件引入到capacitor模块中src/main/ets/components/ImageCompress目录下。\r\n\r\n将源码中src/main/ets/components/MediaAction目录下的CameraDefine.ets、CameraSelectDialog.ets、CheckCameraPermission.ets、MediaAction.ets文件引入到capacitor模块中src/main/ets/components/MediaAction目录下。\r\n\r\n#### 4. 添加 ArkTS 配置\r\n\r\n在`capacitor`模块的`build-profile.json5`文件中，`buildOption/arkOptions/runtimeOnly/sources`配置项数组中加入步骤 3 中拷贝的\r\nets 文件路径：\r\n\r\n```json\r\n{\r\n  \"buildOption\": {\r\n    \"arkOptions\": {\r\n      \"runtimeOnly\": {\r\n        \"sources\": [\r\n          \"./src/main/ets/components/ImageCompress/CameraAction.ets\",\r\n          \"./src/main/ets/components/MediaAction/MediaAction.ets\",\r\n          \"./src/main/ets/components/MediaAction/CameraSelectDialog.ets\",\r\n          \"./src/main/ets/components/MediaAction/CheckCameraPermission.ets\"\r\n        ]\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## 卸载\r\n\r\n```bash\r\n# 卸载 camera 插件\r\nhionic plugin remove @capacitor/camera\r\n```\r\n\r\n## 约束与限制\r\n\r\n### 兼容性\r\n\r\n在以下版本中已测试通过：\r\n\r\n1. capacitor: 8.0.0-ohos-8.0.0;SDK: 5.0.5(17); IDE: DevEco Studio: 6.0.0; ROM: 5.1.0.150;\r\n\r\n### 权限要求\r\n\r\nOpenHarmony权限参考[申请应用权限](https://docs.openharmony.cn/pages/v6.0/zh-cn/application-dev/security/AccessToken/app-permissions.md)\r\n，使用相机拍摄功能需要配置相机权限，在主工程的`module.json5`的requestPermissions数组中添加以下权限配置：\r\n\r\n```json\r\n{\r\n  \"name\": \"ohos.permission.CAMERA\",\r\n  \"reason\": \"$string:camera\",\r\n  \"usedScene\": {\r\n    \"abilities\": [\r\n      \"EntryAbility\"\r\n    ],\r\n    \"when\": \"always\"\r\n  }\r\n}\r\n```\r\n\r\n## 使用示例\r\n\r\n### 示例1：相机拍摄或相册选取单张照片\r\n\r\n该示例演示调用相机API，弹出选择弹窗，支持用户选择相机拍摄或从相册选取单张图片，配置图片质量并以Uri格式返回，可直接渲染展示。\r\n\r\n```typescript\r\nimport { Camera, CameraResultType } from '@capacitor/camera';\r\n\r\nconst takePicture = async () => {\r\n  const image = await Camera.getPhoto({\r\n    quality: 90,\r\n    allowEditing: true,\r\n    resultType: CameraResultType.Uri\r\n  });\r\n\r\n  // image.webPath 包含一个可以作为图片 src 设置的路径。\r\n  // 您可以使用 image.path 访问原始文件，如果需要，可以将其传递给 Filesystem API 以读取图片的原始数据，\r\n  // （或者将 resultType: CameraResultType.Base64 传递给 getPhoto）\r\n  var imageUrl = image.webPath;\r\n\r\n  // 现在可以将其设置为图片的 src\r\n  imageElement.src = imageUrl;\r\n};\r\n```\r\n\r\n## 使用说明\r\n\r\n引入@capacitor/camera插件的Camera模块使用，所有API均基于Promise实现，支持异步调用，使用前建议先校验并申请对应权限。\r\n\r\n### 1. 获取单张照片\r\n\r\n弹出选择框，提示用户从相册选择一张照片或使用相机拍摄新照片，支持配置图片质量、尺寸、返回格式等参数。\r\n\r\n#### 方法签名\r\n\r\n```Plain Text\r\ngetPhoto(options: ImageOptions): Promise<Photo>\r\n```\r\n\r\n#### ImageOptions\r\n\r\n| 参数                       | 类型                                   | 描述                                                                                                                  | 默认值                      |\r\n|--------------------------|--------------------------------------|---------------------------------------------------------------------------------------------------------------------|--------------------------|\r\n| **`quality`**            | `number`                             | 返回为JPEG的画质，范围为0到100                                                                                                 |                          |\r\n| **`allowEditing`**       | `boolean`                            | 是允许用户裁剪还是做小幅编辑（针对特定平台）。在 iOS 上，它只支持 [CameraSource.Camera](#camerasource)，但不支持 [CameraSource.Photos](#camerasource)。 |                          |\r\n| **`resultType`**         | [CameraResultType](#cameraresulttype) | 数据返回格式。目前，仅支持 'Base64'、'DataUrl' 或 'Uri'                                                                            |                          |\r\n| **`saveToGallery`**      | `boolean`                            | 暂时无法支持                                                                                                              | `: false`                |\r\n| **`width`**              | `number`                             | 保存图像的最大宽度,按照比例                                                                                                      |                          |\r\n| **`height`**             | `number`                             | 保存图像的最大期望高度,按照比例                                                                                                    |                          |\r\n| **`correctOrientation`** | `boolean`                            | 是否要自动将图像“向上”旋转以校正纵向模式                                                                                               | `: true`                 |\r\n| **`source`**             | [CameraSource](#camerasource)        | 照片来源，‘PROMPT’选项，会提示用户选择相册或拍照                                                                                        | `: CameraSource.Prompt`  |\r\n| **`direction`**          | [CameraDirection](#cameradirection)  | 摄像头方向                                                                                                               | `: CameraDirection.Rear` |\r\n| **`presentationStyle`**  | <Code>'fullscreen'</Code>            | 相机风格,默认全屏                                                                                                           | `: 'fullscreen'`         |\r\n| **`webUseInput`**        | `boolean`                            | 是使用PWA元素体验还是文件输入，暂不支持                                                                                               |                          |\r\n| **`promptLabelHeader`**  | `string`                             | ‘PROMPT’ 选项，显示文本                                                                                                    | `: 'Photo'`              |\r\n| **`promptLabelCancel`**  | `string`                             | ‘PROMPT’ 选项，显示文本，取消按钮                                                                                               | `: 'Cancel'`             |\r\n| **`promptLabelPhoto`**   | `string`                             | ‘PROMPT’ 选项，显示文本，选择已保存图片的按钮标签                                                                                       | `: 'From Photos'`        |\r\n| **`promptLabelPicture`** | `string`                             | ‘PROMPT’ 选项，显示文本，打开相机的按钮标签                                                                                          | `: 'Take Picture'`       |\r\n\r\n#### Photo\r\n\r\n| 参数                 | 类型        | 描述                                                                                                                                       |\r\n|--------------------|-----------|------------------------------------------------------------------------------------------------------------------------------------------|\r\n| **`base64String`** | `string`  | 如果使用 [CameraResultType.Base64](#cameraresulttype)，则是图像的 base64 编码字符串表示                                                                   |\r\n| **`dataUrl`**      | `string`  | 以“data：image/jpeg”开头的URL;base64，'以及如果使用 [CameraResultType.DataUrl](#cameraresulttype)，则是 base64 编码的图像字符串表示。注意：在网页版中，文件格式可能会根据浏览器不同而有所不同。 |\r\n| **`path`**         | `string`  | 如果使用 [CameraResultType.Uri](#cameraresulttype)，路径将包含一个完整的、平台特定的文件 URL，之后可以通过文件系统 API 读取。                                                 |\r\n| **`webPath`**      | `string`  | webPath 返回一条路径，可用于设置图像的 src 属性，以实现高效的加载和渲染。                                                                                              |\r\n| **`exif`**         | `any`     | 从图像中检索的Exif数据（如有）                                                                                                                        |\r\n| **`format`**       | `string`  | 图片的格式，比如：jpeg、png、gif。iOS和Android只支持jpeg。网页版支持 jpeg、png 和 gif，但具体可用性可能因浏览器而异。只有当 设置为 或 设置为 时，GIF才被支持。`webUseInput``true``source``Photos` |\r\n| **`saved`**        | `boolean` | 无论图片是否保存到画廊。在Android和iOS上，如果用户未授予所需权限，保存到画廊可能会失败。在 Web 上没有画廊，因此总是返回 false。                                                               |\r\n\r\n### 2. 多选相册图片\r\n\r\n打开系统相册，允许用户从相册中选择多张图片，支持配置图片质量、尺寸、选择数量上限。\r\n\r\n#### 方法签名\r\n\r\n```Plain Text\r\npickImages(options: GalleryImageOptions): Promise<GalleryPhotos>\r\n```\r\n\r\n#### GalleryImageOptions\r\n\r\n| 参数                       | 类型                        | 描述                    | 默认值              |\r\n|--------------------------|---------------------------|-----------------------|------------------|\r\n| **`quality`**            | <code>number</code>       | 图像质量为JPEG，从0到100      |                  |\r\n| **`width`**              | <code>number</code>       | 保存图像的最大宽度,按照比例        |                  |\r\n| **`height`**             | <code>number</code>       | 保存图像的最大期望高度，按照比例      |                  |\r\n| **`correctOrientation`** | <code>boolean</code>      | 是否要自动将图像“向上”旋转以校正纵向模式 | `:true`          |\r\n| **`presentationStyle`**  | <code>'fullscreen'</code> | 相机风格,默认全屏             | `: 'fullscreen'` |\r\n| **`limit`**              | <code>number</code>       | 用户可选择的最大图片数量          | `0 (unlimited)`  |\r\n\r\n#### GalleryPhotos\r\n\r\n| 参数           | 类型             | 描述     |\r\n|--------------|----------------|--------|\r\n| **`photos`** | GalleryPhoto[] | 选择图片列表 |\r\n\r\n#### GalleryPhoto\r\n\r\n| 参数            | 类型       | 描述                                                         |\r\n|---------------|----------|------------------------------------------------------------|\r\n| **`path`**    | `string` | 完整的、平台特定的文件URL，之后可以通过Filesystem API读取。                     |\r\n| **`webPath`** | `string` | webPath 返回一条路径，可用于设置图像的 src 属性，以实现高效的加载和渲染。                |\r\n| **`exif`**    | `any`    | 从图像中检索的Exif数据（如有）                                          |\r\n| **`format`**  | `string` | 图片的格式，比如：jpeg、png、gif。iOS和Android只支持jpeg。网页支持jpeg、png和gif。 |\r\n\r\n### 3. 检查权限状态\r\n\r\n检查相机和相册的权限授予状态，返回对应权限的当前状态。\r\n\r\n#### 方法签名\r\n\r\n```Plain Text\r\ncheckPermissions(): Promise<PermissionStatus>\r\n```\r\n\r\n### 4. 申请权限\r\n\r\n主动向系统申请相机、相册相关权限，获取权限后才可正常使用拍照、选图功能。\r\n\r\n#### 方法签名\r\n\r\n```Plain Text\r\nrequestPermissions(permissions?: CameraPluginPermissions): Promise<PermissionStatus>\r\n```\r\n\r\n#### CameraPluginPermissions\r\n\r\n| 参数                | 类型                       |\r\n|-------------------|--------------------------|\r\n| **`permissions`** | `CameraPermissionType[]` |\r\n\r\n#### CameraPermissionType\r\n\r\n```\r\n'camera' | 'photos'\r\n```\r\n\r\n### 5. 暂不支持方法\r\n\r\n- pickLimitedLibraryPhotos()：从受限相册选择单张图片，暂不支持\r\n\r\n- getLimitedLibraryPhotos()：从受限相册选择多张图片，暂不支持\r\n\r\n### 数据类型定义\r\n\r\n#### PermissionStatus\r\n\r\n| 参数名    | 类型                                              |\r\n|--------|-------------------------------------------------|\r\n| camera | [CameraPermissionState](#camerapermissionstate) |\r\n| photos | [CameraPermissionState](#camerapermissionstate) |\r\n\r\n#### 类型别名\r\n\r\n##### CameraPermissionState\r\n\r\n```\r\nPermissionState | 'limited'\r\n```\r\n\r\n##### PermissionState\r\n\r\n```\r\n'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'\r\n```\r\n\r\n#### 枚举类型\r\n\r\n##### CameraResultType\r\n\r\n| 成员      | 取值        |\r\n|---------|-----------|\r\n| Uri     | 'uri'     |\r\n| Base64  | 'base64'  |\r\n| DataUrl | 'dataUrl' |\r\n\r\n##### CameraSource\r\n\r\n| 成员     | 取值       | 描述     |\r\n|--------|----------|--------|\r\n| Prompt | 'PROMPT' | 弹窗选择来源 |\r\n| Camera | 'CAMERA' | 相机拍摄   |\r\n| Photos | 'PHOTOS' | 相册选取   |\r\n\r\n##### CameraDirection\r\n\r\n| 成员    | 取值      |\r\n|-------|---------|\r\n| Rear  | 'REAR'  |\r\n| Front | 'FRONT' |\r\n\r\n## 目录结构\r\n\r\n```plaintext\r\n|---- 目录\r\n|     |---- src/main   # 插件的实现代码\r\n|           |----cpp   # C++ 代码\r\n|           |----ets   # ArkTS 代码\r\n|     |---- README.md          # 说明文档\r\n|     |---- package.json       # 配置文件\r\n|     |---- plugin.xml         # 插件配置文件\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Ionic/capacitor-camera/issues)\r\n，当然，也非常欢迎发 [PR](https://gitcode.com/CPF-Ionic/capacitor-camera/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **MIT License** 开源，详见 [LICENSE](./LICENSE) 文件。","readmeFilename":"README.md"}