| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 22-Mar-2025 | - | 37 | 34 | ||
| entry/ | 22-Mar-2025 | - | 2,071 | 1,901 | ||
| hvigor/ | 22-Mar-2025 | - | 21 | 21 | ||
| photomodify/ | 22-Mar-2025 | - | 4,718 | 4,350 | ||
| screenshots/devices/ | 22-Mar-2025 | - | ||||
| .gitignore | D | 22-Mar-2025 | 254 | 15 | 14 | |
| README.md | D | 22-Mar-2025 | 2.1 KiB | 40 | 20 | |
| README_zh.md | D | 22-Mar-2025 | 8.9 KiB | 115 | 92 | |
| build-profile.json5 | D | 22-Mar-2025 | 1.1 KiB | 47 | 46 | |
| hvigorfile.js | D | 22-Mar-2025 | 168 | 2 | 1 | |
| hvigorw | D | 22-Mar-2025 | 2.1 KiB | 62 | 28 | |
| hvigorw.bat | D | 22-Mar-2025 | 2 KiB | 72 | 56 | |
| oh-package.json5 | D | 22-Mar-2025 | 846 | 28 | 26 | |
| ohosTest.md | D | 22-Mar-2025 | 9.2 KiB | 51 | 49 |
README.md
1# Image Processing 2 3### Introduction 4 5This sample demonstrates the image processing function. 6 7In this sample, [\<TextArea>](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/arkui-ts/ts-basic-components-textarea.md) is used to implement multi-line text input, [mediaLibrary](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-mediaquery.md) is used to obtain images from albums, [image](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-image.md) is used to generate pixel maps, and **scale()**, **crop()**, and **rotate()** of the **pixelMap** class are used to scale, crop, and rotate images. 8 9### Usage 10 111. Touch **Add image** on the offering review page. The page for selecting images is displayed. 12 132. Select the images to be displayed. You can select six images at most. 14 153. Select an image and touch **Next**. The image editing page is displayed. To scale an image, touch **scale** and then touch **narrow** or **amplification**. To crop the image, touch **crop** and select a crop ratio. To rotate the image, touch **rotate**.To decode the image, touch **update hdr setting**. 16 174. After finishing editing the image, touch **OK**. The page for posting comments is displayed, with the images shown. You can touch **Add image** to add more images. 18 195. Touch the back button to exit the app. 20 21### Preview 22 23   24 25### Required Permissions 26 27[ohos.permission.READ_MEDIA](https://gitee.com/openharmony/docs/blob/master/en/application-dev/security/permission-list.md), which allows an app to read media files from the user's external storage. 28 29### Dependency 30 31N/A 32 33### Constraints 34 351. This sample can only be run on standard-system devices that use the Rockchip RK3568 chip. 36 372. This sample is based on the stage model, which is supported from API version 12 (API Version 12 5.0.0.26). 38 393. DevEco Studio (4.1.3.500) must be used. 40
README_zh.md
1# 图片编辑 2 3### 介绍 4 5本示例使用 [TextArea](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-textarea.md) 6实现多文本输入,使用 [@ohos.file.photoAccessHelper](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-media-library-kit/js-apis-photoAccessHelper.md)拉起图库,实现在相册中获取图片,使用 [@ohos.multimedia.image](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-image-kit/js-apis-image.md) 7生成pixelMap,使用pixelMap的scale(),crop(),rotate()接口实现对图片的缩放,裁剪,旋转功能。 8使用[@ohos.effectKit](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkgraphics2d/js-apis-effectKit.md) 9生成effectKit,使用effectKit.getHighestSaturationColor() 10接口实现对图片的高亮调节。添加文字/贴纸,利用组件的组合编辑素材大小和位置,再使用OffscreenCanvasRenderingContext2D进行离屏绘制保存。 11接口实现对图片编解码功能。可以通过uri\fd\data\rawFile将图片资源解码为ImageSource或pixelMap。可通过ImageSource/pixelMap编码为file/data。 12 13### 效果预览 14 15| 编辑删除 | 图片调整 | 图片标记 | 16|-------------------------------------------------|-----------------------------------------------------|-------------------------------------------------| 17|  |  |  | 18 19| 图片裁剪 | 图片缩放 | 图片旋转 | 20|-------------------------------------------------|---------------------------------------------------|-----------------------------------------------------| 21|  |  |  | 22 23| 图片亮度调节 | 图片添加贴纸 | 图片添加文字 | 图片色域调节 | 修改hdr设置 | 24|-----------------------------------------------------|-------------------------------------------------------|-------------------------------------------------|-------------------------------------------------------------|-------------------------------------------------------| 25|  |  |  |  |  | 26 27 28使用说明: 29 301. 发表评价页面点击添加图片/照片,页面跳转到图片选择页面; 312. 进入图片选择页面后,选择需要显示的图片; 323. 选中图片后,页面会跳转到发表评价页面,点击图片跳转到图片编辑删除页面,点击编辑进入到编辑功能页; 334. 调整菜单有裁剪、缩放、旋转、调色、修改hdr设置功能(因为有些机型设备不支持,所以HDR解码后显示效果看不出来); 345. 标记菜单有添加文字、添加贴纸功能; 356. 编辑完成后,点击撤回按钮图片会还原到上一个编辑状态; 367. 图片编辑完成后,点击保存,页面会跳转到发表评价页面,显示相关照片; 378. 点击返回按钮,退出应用。 38 39### 工程目录 40 41``` 42entry/src/main/ets/ 43|---pages 44| |---EditImages.ets // 图片编辑 45| |---GetPictrues.ets // 图片选择 46| |---Index.ets // 首页 47| |---UpadatePages.ets // 编辑删除界面 48photomodify/src/main/ets/components 49|---featrue 50| |---ComputeFeature.ets // 计算功能 51| |---PixelMapQueue.ets // PixelMap队列 52|---model 53| |---AdjustData.ets // 功能数据 54| |---AdjustModels.ets // 功能模型 55| |---MaterialData.ets // 素材数据 56| |---MaterialModels.ets // 素材模型 57|---pages 58| |---EditImage.ets // 图片编辑 59| |---InputTextDialog.ets // 输入框弹窗 60| |---MaterialEdit.ets // 素材编辑组件 61| |---ScalePhotoPage.ets // 图片缩放 62| |---ColorSpacePage.ets // 色域修改 63| |---UpdatePage.ets // 编辑删除界面 64|---util 65| |---CoordinatesUtil.ets // 转换坐标系 66| |---CopyObj.ets // 对象克隆 67| |---ImageUtil.ets // 图片宽高处理 68| |---Logger.ets // 日志工具 69| |---MediaUtil.ts // 媒体帮助类 70| |---SvgUtil.ts // svg操作帮助类 71| |---FileUtil.ets // 图片编解码操作帮助类 72``` 73 74### 具体实现 75 76+ 图片选择功能在GetPictures中实现,源码参考[GetPictures.ets](entry%2Fsrc%2Fmain%2Fets%2Fpages%2FGetPictures.ets): 77 + 图片选择:首先使用[@ohos.file.photoAccessHelper](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-media-library-kit/js-apis-photoAccessHelper.md)拉起图库选择图片,然后将选择的图片用select数组保存路径,展示到页面便于选择,选择完跳转到首页,点击一张图片,进入到编辑删除界面。 78+ 图片编辑功能在EditImage中实现,源码参考[EditImage.ets](photomodify%2Fsrc%2Fmain%2Fets%2Fcomponents%2Fpages%2FEditImage.ets): 79 + 图片编辑:图片编辑权限需要使用[requestPermissionsFromUser](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-abilityAccessCtrl.md#requestpermissionsfromuser9) 80 申请,源码参考[MainAbility.ts](entry/src/main/ets/MainAbility/MainAbility.ts) 81 ,首先根据选择图片获取到的uri打开图片文件,fileAsset.open选择‘rw'读写模式,然后使用image.createImageSource创建图片源实例,接下来使用createPixelMap创建PixelMap对象,便于处理图片,最后使用crop对图像进行裁剪处理,使用scale对图像进行缩放处理,rotate进行旋转处理。亮度调节使用effectKit.getHighestSaturationColor() 82 接口实现对图片的高亮调节。图片解码通过createPixelMap(DecodingOptions),并根据DecodingOptions构造参数里面的设定值(0: auto;1: SDR;2 HDR),对应创建不同的PixelMap对象。其中设置值为AUTO时,会根据图片本身结构来判断是否解码为HDR内容。添加文字/贴纸,编辑模式下,使用组件组合(Image、Shape、Text)进行交互完成素材大小和位置选择;编辑确认后,再使用OffscreenCanvasRenderingContext2D进行离屏绘制,保存为新的pixelMap。 83+ 图片编解码功能在Image中实现,源码参考[Image.cpp](photomodify/src/main/cpp/Image.cpp): 84 + 图片解码:调用OH_ImageSourceNative_CreateFromUri,OH_ImageSourceNative_CreateFromFd, 85 OH_ImageSourceNative_CreateFromData,OH_ImageSourceNative_CreateFromRawFile等接口,根据接收不同的参数调用不同的接口来创建ImageSource对象。 86 再通过OH_ImageSourceNative_CreatePixelmap接口将ImageSource转换为新的pixelMap。 87 + 图片编码:通过调用OH_ImagePackerNative_PackToFileFromPixelmap,OH_ImagePackerNative_PackToFileFromImageSource, 88 OH_ImagePackerNative_PackToDataFromPixelmap,OH_ImagePackerNative_PackToDataFromImageSource等接口,可以将ImageSource或pixelMap编码为file/data。 89 90### 相关权限 91 92[ohos.permission.READ_IMAGEVIDEO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionread_imagevideo) 93 94### 依赖 95 96不涉及。 97 98### 约束与限制 99 1001. 本示例仅支持标准系统上运行,支持设备:RK3568; 1012. 本示例为Stage模型,已适配API version 12版本SDK,SDK版本号(API Version 12 5.0.0.26),镜像版本号(5.0.0.26); 1023. 本示例需要使用DevEco Studio 版本号(4.1.3.500)及以上版本才可编译运行。 103 104### 下载 105 106如需单独下载本工程,执行如下命令: 107 108``` 109git init 110git config core.sparsecheckout true 111echo code/BasicFeature/Media/Image/ > .git/info/sparse-checkout 112git remote add origin https://gitee.com/openharmony/applications_app_samples.git 113git pull origin master 114``` 115