{"_id":"@cordova-ohos/cordova-plugin-camera","_rev":"5-4b972ab27cde0e9b2cd88091db48b971","name":"@cordova-ohos/cordova-plugin-camera","dist-tags":{"latest":"8.0.1"},"versions":{"8.0.0":{"name":"@cordova-ohos/cordova-plugin-camera","version":"8.0.0","keywords":["cordova","camera","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-camera@8.0.0","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-camera/issues"},"dist":{"shasum":"dbc1701001f181812467c000b4d02991aa18f890","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-camera/-/cordova-plugin-camera-8.0.0.tgz","fileCount":13,"integrity":"sha512-vAoPfxkisxsq4BF9IWR8ADRxLTOGGM+QUmf/kknoO4fMCpRh+lQYKT35KxbAms8ajUAMwyg6jdxsGAX624wjdw==","signatures":[{"sig":"MEUCIQDZAfSPfUtPfpfhux1fRHzuix5GbguRe4AxwYlLJyrSSAIgG0Lnsdjjt2VbTV1bF4XpCdNl78/1DIq1ekxR4wxWxPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100611},"cordova":{"id":"cordova-plugin-camera","platforms":["ohos"]},"engines":{"cordovaDependencies":{"8.0.0":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"71e7acede0b8cdcb08ee9551a123a4aeef78c2d4","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-camera","type":"git"},"_npmVersion":"10.5.1","description":"Cordova Camera Plugin","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-camera_8.0.0_1773827176000_0.44456170633331427","host":"s3://npm-registry-packages-npm-production"}},"8.0.1":{"name":"@cordova-ohos/cordova-plugin-camera","version":"8.0.1","description":"Cordova Camera Plugin","cordova":{"id":"cordova-plugin-camera","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-camera"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-camera/issues"},"keywords":["cordova","camera","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"8.0.1":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-camera@8.0.1","gitHead":"a05224eed8afcd0de5d938573b77222be5a16787","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-/yoabmnin23WU4f0S4RAOPCrtUGIr+8hS0idAdAkRvzLfLMynm8mGhWPXJeEMkohq1DZjYH9O4zE4IPvvcbdZg==","shasum":"42527c946c808f2a7167c38c6faf3f94242b6d8e","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-camera/-/cordova-plugin-camera-8.0.1.tgz","fileCount":14,"unpackedSize":118831,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD5ExHpZR8e4bot/NxS29d+lpbnoIszmpvzsT4GbXPm6wIhALlPRtYByp8f3hEeZuOstlAL1YbswAyonqi9ZRT7DH0l"}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-plugin-camera_8.0.1_1785139504188_0.004767196434440013"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-18T09:46:15.913Z","modified":"2026-07-27T08:05:04.669Z","8.0.0":"2026-03-18T09:46:16.153Z","8.0.1":"2026-07-27T08:05:04.336Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-camera/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","camera","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-camera"},"description":"Cordova Camera Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-plugin-camera</center>\r\n\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本项目基于 [cordova-plugin-camera@8.0.0](https://www.npmjs.com/package/cordova-plugin-camera/v/8.0.0) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-camera](#cordova-plugin-camera)\r\n  - [简介](#简介)\r\n  - [支持平台](#支持平台)\r\n  - [下载安装](#下载安装)\r\n    - [从 npm 安装（推荐）](#从-npm-安装推荐)\r\n    - [指定平台安装 ohos](#指定平台安装-ohos)\r\n    - [从 GitCode 仓库安装](#从-gitcode-仓库安装)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证)\r\n    - [卸载](#卸载)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n    - [权限要求](#权限要求)\r\n  - [使用示例](#使用示例)\r\n  - [使用说明](#使用说明)\r\n    - [核心方法：getPicture()](#核心方法getpicture)\r\n      - [方法定义](#方法定义)\r\n      - [回调函数说明](#回调函数说明)\r\n      - [配置参数（options）](#配置参数options)\r\n  - [新增特性](#新增特性)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n## 简介\r\n\r\n`cordova-plugin-camera` 是 Harmony Cordova 生态系统中一款核心插件，用于为 Cordova 应用提供访问设备摄像头的能力，支持拍摄照片、从相册选取图片，并能对获取的图片进行压缩、裁剪等基础处理。\r\n\r\n* 调用设备原生摄像头拍摄照片\r\n\r\n* 从设备相册中选择已有的图片\r\n\r\n* 配置图片质量、尺寸、格式（JPEG/PNG）\r\n\r\n* 支持图片压缩与裁剪\r\n\r\n* 提供 base64 编码或文件路径两种图片返回格式\r\n\r\n\r\n## 支持平台\r\n\r\n- **Android**：API 19 及以上（Android 4.4+）\r\n\r\n- **iOS**：10.0 及以上\r\n\r\n- **OHOS**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过 hcordova CLI 即可快速安装插件，支持从 npm 仓库或 GitCode 仓库获取。\r\n\r\n\r\n### 从 npm 安装（推荐）\r\n```bash\r\n# 使用 hcordova CLI 安装\r\n\r\n# 安装 hcordova 命令化工具\r\nnpm install -g hcordova\r\n\r\n# 全平台安装插件\r\nhcordova plugin add cordova-plugin-camera\r\n\r\n```\r\n\r\n### 指定平台安装 ohos\r\n\r\n仅为 OHOS 平台安装插件：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\nhcordova plugin add cordova-plugin-camera --platform ohos\r\n\r\n# 指定版本安装\r\nhcordova plugin add cordova-plugin-camera@1.0.0 --platform ohos\r\n```\r\n\r\n### 从 GitCode 仓库安装\r\n\r\n仅为 OHOS 平台安装插件：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\n\r\n# 默认分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-camera.git --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-camera.git@develop --platform ohos\r\n\r\n```\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：~/Downloads/cordova-plugin-camera）\r\n# 执行离线安装\r\nhcordova plugin add ~/Downloads/cordova-plugin-camera --platform ohos\r\n```\r\n\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n### 卸载\r\n\r\n```bash\r\n# Cordova CLI 全平台卸载\r\nhcordova plugin remove cordova-plugin-camera \r\n\r\n# 指定平台卸载\r\nhcordova plugin remove cordova-plugin-camera --platform ohos\r\n```\r\n\r\n## 约束与限制\r\n\r\n* 依赖插件：无强制依赖，若需处理图片路径，可搭配 `cordova-plugin-file` 使用\r\n\r\n\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio: 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio: 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n\r\n### 权限要求\r\n\r\nOHOS 相机功能，调用系统相机拍摄照片，无需权限申请\r\n\r\n## 使用示例\r\n\r\n以下提供常见场景的使用示例，涵盖“拍摄照片”“从相册选图”“获取 base64 图片”。\r\n\r\n\r\n```js\r\n// 前置摄像头拍摄照片\r\nfunction openCamera() {\r\n    var options = {\r\n        // Some common settings are 20, 50, and 100\r\n        quality: 100,\r\n        destinationType: Camera.DestinationType.FILE_URI,\r\n        sourceType: Camera.PictureSourceType.CAMERA,\r\n        encodingType: Camera.EncodingType.JPEG,\r\n        mediaType: Camera.MediaType.PICTURE,\r\n        allowEdit: true,\r\n        cameraDirection:Camera.Direction.FRONT,\r\n        correctOrientation: true  // Corrects Android orientation quirks\r\n    }\r\n    navigator.camera.getPicture(function cameraSuccess(imageUri) {\r\n        var elem = document.getElementById('imgInfo1');\r\n        elem.src = imageUri;\r\n        elem.onload = function(){\r\n            document.getElementById('imgSize1').innerHTML = \"width:\"+elem.naturalWidth+\",height:\"+elem.naturalHeight;\r\n        }\r\n    }, function cameraError(error) {\r\n        console.debug(\"Unable to obtain picture: \" + error, \"app\");\r\n    }, options);\r\n}\r\n```\r\n\r\n```js\r\n// 后置摄像头录制视频\r\nfunction openCameraVod() {\r\n    var options = {\r\n        quality: 100,\r\n        destinationType: Camera.DestinationType.FILE_URI,\r\n        sourceType: Camera.PictureSourceType.CAMERA,\r\n        encodingType: Camera.EncodingType.JPEG,\r\n        mediaType: Camera.MediaType.VIDEO,\r\n        allowEdit: false,\r\n        cameraDirection:Camera.Direction.BACK,\r\n        correctOrientation: true  // Corrects Android orientation quirks\r\n    }\r\n\r\n    navigator.camera.getPicture(function cameraSuccess(imageUri) {\r\n        var fileName = imageUri;\r\n    }, function cameraError(error) {\r\n        console.debug(\"Unable to obtain picture: \" + error, \"app\");\r\n    }, options);\r\n}\r\n```\r\n\r\n```js\r\n// 从相册选择一个图片，指定高度、宽度和压缩图片质量\r\nfunction openPhoto() {\r\n    var options = {\r\n        quality: 80,\r\n        destinationType: Camera.DestinationType.DATA_URL,\r\n        sourceType: Camera.PictureSourceType.PHOTOLIBRARY,\r\n        encodingType: Camera.EncodingType.JPEG,\r\n        mediaType: Camera.MediaType.PICTURE,\r\n        targetWidth:800,\r\n        targetHeight:600,\r\n        allowEdit: true,\r\n        correctOrientation: true  // Corrects Android orientation quirks\r\n    }\r\n    navigator.camera.getPicture(function cameraSuccess(imageData) {\r\n        var elem = document.getElementById('imgInfo2');\r\n        elem.src = \"data:image/jpeg;base64,\"+imageData;\r\n        elem.onload = function(){\r\n            document.getElementById('imgSize2').innerHTML = \"width:\"+elem.naturalWidth+\",height:\"+elem.naturalHeight;\r\n        }\r\n    }, function cameraError(error) {\r\n        console.debug(\"Unable to obtain picture: \" + error, \"app\");\r\n    }, options);\r\n}\r\n```\r\n\r\n## 使用说明\r\n\r\n插件核心通过 `navigator.camera` 对象暴露 API，主要方法为 `getPicture()`，用于获取图片。\r\n\r\n### 核心方法：getPicture()\r\n\r\n#### 方法定义\r\n\r\n```js\r\nnavigator.camera.getPicture(\r\n  successCallback,  // 成功回调（返回图片数据）\r\n  errorCallback,    // 失败回调（返回错误信息）\r\n  options           // 配置参数（可选）\r\n);\r\n```\r\n\r\n#### 回调函数说明\r\n\r\n* **successCallback(imageData)**：\r\n\r\n  * 功能：获取图片成功后触发\r\n\r\n  * 参数 `imageData`：根据 `options.destinationType` 返回不同格式：\r\n\r\n    * `DATA_URL`：返回 base64 编码的图片字符串（格式：`data:image/jpeg;base64,...`）\r\n\r\n    * `FILE_URI`/`NATIVE_URI`：返回图片文件的本地路径，该路径可以直接在 img 标签中引用（如 `https://localhost/data/storage/el2/base/haps/entry/cache/17636018073030.png`）\r\n\r\n* **errorCallback(error)**：\r\n\r\n  * 功能：获取图片失败或用户取消时触发\r\n\r\n  * 参数 `error`：包含错误信息的字符串\r\n  \r\n#### 配置参数（options）\r\n\r\n| 参数名 | 类型 | 可选 | 默认值 | 说明 |\r\n| --- | --- | --- | --- | --- |\r\n| `quality` | Number | 0-100 | 50 | 图片质量（0 最低，100 最高）OHOS 图片质量压缩[参考新特性](#新增特性) |\r\n| `destinationType` | Number | `Camera.DestinationType.DATA_URL` `Camera.DestinationType.FILE_URI` `Camera.DestinationType.NATIVE_URI` | `FILE_URI` | 图片返回格式 |\r\n| `sourceType` | Number | `Camera.PictureSourceType.CAMERA` `Camera.PictureSourceType.PHOTOLIBRARY` `Camera.PictureSourceType.SAVEDPHOTOALBUM` | `CAMERA` | 图片来源（摄像头/相册/保存的相册） |\r\n| `allowEdit` | Boolean | true（仅用于兼容 Android/iOS，该字段在 OHOS 平台默认 true） | true | 是否允许用户编辑图片（裁剪） |\r\n| `encodingType` | Number | `Camera.EncodingType.JPEG` `Camera.EncodingType.PNG` | `JPEG` | 图片编码格式 |\r\n| `targetWidth` | Number | 正整数 | -1（原尺寸） | 图片目标宽度（像素），会按比例缩放 |\r\n| `targetHeight` | Number | 正整数 | -1（原尺寸） | 图片目标高度（像素），会按比例缩放 |\r\n| `mediaType` | Number | `Camera.MediaType.PICTURE` `Camera.MediaType.VIDEO` `Camera.MediaType.ALLMEDIA` | `PICTURE` | 媒体类型（仅图片/仅视频/所有媒体） |\r\n| `correctOrientation` | Number | true/false | true | 保持图片正确方向 |\r\n| `saveToPhotoAlbum` | Boolean | true/false | true | OHOS 平台无需申请权限，图片默认保存到相册 |\r\n| `cameraDirection` | Number | `Direction.BACK` `Direction.FRONT` | `BACK` | 摄像头（后置摄像头、前置摄像头） |\r\n\r\n## 新增特性\r\n\r\n可在 config.xml 中配置图片压缩行为：\r\n\r\n| 配置项 | 类型 | 说明 | 默认值 |\r\n| --- | --- | --- | --- |\r\n| CameraImageCompress | Boolean | 是否启用图片压缩功能 | true |\r\n| maxCompressSize | Number | 压缩后图片的目标大小（单位：MB），系统会尽量将图片压缩至接近该值 | 4 |\r\n| showToastText | String | 压缩时显示的提示文本，为空则不显示提示框 | 压缩图片，请稍后 |\r\n  \r\n```xml\r\n<!-- config.xml 不配置，默认压缩图片最大 4M，压缩时 showToastText 提醒内容为：“压缩图片，请稍后” -->\r\n<!-- config.xml 增加配置以下，显示压缩图片的提示框内容，showToastText 为空，不显示提示框，maxCompressSize 为压缩图片最后的大小，单位 M，例如 2M，压缩无限接近 2M 的图片 -->\r\n<preference name=\"CameraImageCompress\" value=\"true\" maxCompressSize=\"2\" showToastText=\"处理中...\" />\r\n```\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-camera/\r\n├── src/                          # 源代码目录\r\n│   └── main/                     # 主要源代码\r\n│       ├── cpp/                  # C++ 原生代码\r\n│       │   └── camera/           # 相机模块\r\n│       │       ├── CameraLauncher.cpp  # 相机启动功能的 C++ 实现\r\n│       │       └── CameraLauncher.h    # 相机启动功能的头文件\r\n│       └── ets/                  # ArkTS 代码（OpenHarmony API）\r\n│           └── components/       # 组件目录\r\n│               ├── ImageCompress/     # 图片压缩组件\r\n│               └── MediaAction/       # 媒体动作组件\r\n│                   └── MediaAction.ets  # 媒体操作的实现\r\n├── www/                          # Web 资源目录\r\n│   ├── Camera.js                 # JavaScript 相机接口（Cordova 桥接层）\r\n│   ├── CameraConstants.js        # 相机常量定义\r\n│   ├── CameraPopoverHandle.js    # 相机弹窗处理\r\n│   └── CameraPopoverOptions.js   # 相机弹窗选项配置\r\n├── .gitignore                    # Git 忽略文件配置\r\n├── LICENSE                       # 项目开源许可证\r\n├── OAT.xml                       # OpenHarmony 审核配置文件\r\n├── package.json                  # Node.js 包配置\r\n├── plugin.xml                    # Cordova 插件描述文件（核心配置）\r\n└── README.md                     # 项目说明文档\r\n\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-camera/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-camera/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- Android 和 iOS：[cordova-plugin-camera 官方指南](https://www.npmjs.com/package/cordova-plugin-camera)\r\n\r\n- GitCode 仓库：[CPF-Cordova/cordova-plugin-camera](https://gitcode.com/CPF-Cordova/cordova-plugin-camera)\r\n","readmeFilename":"README.md"}