0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于开源鸿蒙的图片编辑开发样例(1)

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 2025-10-31 09:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【拆·应用】是为开源鸿蒙应用开发者打造的技术分享平台,是汇聚开发者的技术洞见与实践经验、提供开发心得与创新成果的展示窗口。诚邀您踊跃发声,期待您的真知灼见与技术火花!

引言

本期内容介绍基于开源鸿蒙在RK3568上开发图片编辑样例的全流程,分为上篇和下篇,本篇为上篇,主要介绍添加相册图片、编译图片功能。

样例简介

在开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本样例首先使用@ohos.file.photoAccessHelper拉起图库选择图片,然后使用image.createImageSource创建图片源实例,接下来使用createPixelMap创建PixelMap对象,便于实现图片的编辑功能,使用effectKit.getHighestSaturationColor() 接口实现对图片的高亮调节,利用Image、Text组件的组合给图片添加文字、贴纸,再使用OffscreenCanvasRenderingContext2D进行离屏绘制保存新的pixelMap。

使用说明

添加相册图片:点击首页的添加图片,选择图库图片,如无图片可点击拍照按钮,拍摄完成后会默认选择刚拍摄的照片,再点击完成按钮,添加图片成功。

编辑图片选项:添加图片成功后,点击编辑,主编辑选项为调整和标记,其中调整包括裁剪、旋转、调色、色域等,标记包括文字和贴纸。

图片裁剪:可选择4:3,16:9,1:1比例裁剪图片。

图片裁剪:顺时针90度,逆时针90度旋转。

亮度调节:通过拖拉进度条调节图片亮度。

色域:给图片设置不同的色域。

样例代码拆解

下面是各个功能模块代码逻辑详细分解。样例源码链接:https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/Image

权限申请

本样例中需要申请受限权限:可直接修改HarmonyAppProvision配置文件

1. 打开HarmonyAppProvision配置文件,即SDK目录下的“Sdk/openharmony/_{Version} _/toolchains/lib/UnsgnedReleasedProfileTemplate.json”文件。

2. 在配置文件中添加需要使用的受限权限。

a)不携带权限数据的受限权限通过修改 "acls" > "allowed-acls" 字段添加。

b)携带权限数据的受限权限可通过修改 "app-services-capabilities" 字段添加。

8802e794-b4b1-11f0-8c8f-92fbcf53809c.png

c)并重新进行应用签名。

添加相册图片

1. 添加相册图片

a)Cloumn容器中包含Image和Text组件,点击后调用GetPictures.getImage()。

885f10c8-b4b1-11f0-8c8f-92fbcf53809c.png

b)在GetPictures.getImage()中首先使用@ohos.file.photoAccessHelper拉起图库选择图片,然后将选择的图片用imgaeList数组保存路径,点击完成跳转到首页。

88bc821c-b4b1-11f0-8c8f-92fbcf53809c.png

c)首页判断imageList长度大于0,通过Grid组件从imageList中获取图片,并设置点击事件点击进入UpdatePages页面。

891f1ba2-b4b1-11f0-8c8f-92fbcf53809c.png

编辑图片

1.编辑图片主页面

a)添加图片完成后,点击图片进入编译图片updatePages页面。

b)updatePages页面中通过readImage获取图片。

897fa5a8-b4b1-11f0-8c8f-92fbcf53809c.png

c)通过imgae和Text组件绘制编辑图标和文字,点击后进入EditImages页面。

89dabdee-b4b1-11f0-8c8f-92fbcf53809c.png

d)编辑页面底部菜单栏会根据this.currentTask状态显示,默认为Task.ADJUST状态,即显示this.getAdjustTool()和this.getFirstLvMenu()自定义组件。

8a34e382-b4b1-11f0-8c8f-92fbcf53809c.png

e)this.getAdjustTool()通过List组件展示裁剪、旋转、调试、色域等编辑选项,点击裁剪后将this.currentTask设置为裁剪状态,点击其他的编辑选项,设置this.currentTask其他的状态,并设置this.cancelOkText,从而刷新底部菜单栏的显示。

8a93cb54-b4b1-11f0-8c8f-92fbcf53809c.png

8aebfe00-b4b1-11f0-8c8f-92fbcf53809c.png

2.裁剪

a)通过List组件展示比例选项,包括原图、4:3、16:9、1:1四种比例,设置点击事件,

获取当前比例,根据当前比例调用this.cropImage()方法进行裁剪。

8b4914a0-b4b1-11f0-8c8f-92fbcf53809c.png

b)在this.cropImage()中调用pixmap.crop方法,并传入计算后的size和坐标进行图片按比例裁剪。

8bac6550-b4b1-11f0-8c8f-92fbcf53809c.png

c)裁剪完成后点击√保存,并返回主编辑菜单,其他编辑操作也是点击保存并返回。

8c0c08ac-b4b1-11f0-8c8f-92fbcf53809c.png

3.旋转

旋转分为顺时针和逆时针90度旋转,调用this.pixmap.rotate()接口,旋转后也是点击右下角√保存旋转后的结果,返回主编辑菜单。

8c6be77c-b4b1-11f0-8c8f-92fbcf53809c.png

4.调色

a)调色目前实现的功能是调节亮度,通过Slider滑动组件直观展示亮度进度条,监听

onChange滑动事件调用this.brightChange()调节图片亮度。

8cc63b32-b4b1-11f0-8c8f-92fbcf53809c.png

b)brightChange中,先将this.pixelMap赋值给this.brightnessOriginBM,再通过createEffect创建Filter实例,通过Filter图像效果类中的brightness,实现亮度调节。

8d28a1e6-b4b1-11f0-8c8f-92fbcf53809c.png

8d8310d6-b4b1-11f0-8c8f-92fbcf53809c.png

5.色域

a)点击色域,进入ColorSpacePage页面。

8de1c6b2-b4b1-11f0-8c8f-92fbcf53809c.png

b)通过ForEach展示SRGB,DisplayP3,DCI_P3,ADOBE_RGB色域,this.pixelMap!.applyColorSpace设置色域。

8e3ecf9c-b4b1-11f0-8c8f-92fbcf53809c.png

结语

以上是本样例具体功能模块的实现,通过本样例让开发者们了解到如何拉起图库选择图片、创建图片源实例、实现图片的编辑功能,标记图片以及进行离屏绘制保存新图片的功能将在下篇介绍。除此之外,开源鸿蒙也提供了丰富的基础组件和其他功能模块,依托开源特性可灵活定制底层功能,借助分布式架构实现 “一次开发,多端部署”,大幅降低跨设备协同开发成本,一系列配套的开发工具和教程可让开发者快速上手,欢迎更多的开发者加入到开源鸿蒙应用开发中,创造更多奇思妙想的应用。

供稿:开发者与活动运营组 刘丽红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    4049

    浏览量

    45597
  • 鸿蒙
    +关注

    关注

    60

    文章

    2865

    浏览量

    45398
  • RK3568
    +关注

    关注

    5

    文章

    628

    浏览量

    7596

原文标题:拆·应用 | 第七期(上):基于开源鸿蒙的图片编辑开发样例

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HarmonyOS开发案例:【图片编辑

    基于canvas组件、图片编解码,介绍了图片编辑实现过程。
    的头像 发表于 04-22 16:42 1622次阅读
    HarmonyOS<b class='flag-5'>开发</b>案例:【<b class='flag-5'>图片</b><b class='flag-5'>编辑</b>】

    基于开源鸿蒙的视频播放开发

    开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发针对视频播放场景,聚焦开源
    的头像 发表于 08-19 10:41 1359次阅读
    基于<b class='flag-5'>开源</b><b class='flag-5'>鸿蒙</b>的视频播放<b class='flag-5'>开发</b><b class='flag-5'>样</b><b class='flag-5'>例</b>

    基于开源鸿蒙的AVPlayer视频播控开发

    开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发基于AVPlayer实现,AvPlayer支持流媒体和本地资源解析、
    的头像 发表于 08-21 10:22 2389次阅读
    基于<b class='flag-5'>开源</b><b class='flag-5'>鸿蒙</b>的AVPlayer视频播控<b class='flag-5'>开发</b><b class='flag-5'>样</b><b class='flag-5'>例</b>

    基于开源鸿蒙的语音识别及语音合成应用开发

    本期内容由AI Model SIG提供,介绍了在开源鸿蒙中,利用sherpa_onnx开源三方库进行ASR语音识别与TTS语音合成应用开发的流程。
    的头像 发表于 08-25 14:26 3651次阅读
    基于<b class='flag-5'>开源</b><b class='flag-5'>鸿蒙</b>的语音识别及语音合成应用<b class='flag-5'>开发</b><b class='flag-5'>样</b><b class='flag-5'>例</b>

    基于开源鸿蒙图片编辑开发(2)

    本期内容介绍基于开源鸿蒙在RK3568上开发图片编辑的全流程,分为上篇和下篇,本篇为下篇,主
    的头像 发表于 10-31 09:19 2820次阅读
    基于<b class='flag-5'>开源</b><b class='flag-5'>鸿蒙</b>的<b class='flag-5'>图片</b><b class='flag-5'>编辑</b><b class='flag-5'>开发</b><b class='flag-5'>样</b><b class='flag-5'>例</b>(2)

    HarmonyOS教程—基于图片处理能力,实现一个图片编辑模板

    :界面UI和图片编辑器。模板界面UI部分主要为开发者提供了:图片编辑界面的设计参考,以及HarmonyOS界面UI
    发表于 08-31 10:13

    【每日精选】开源鸿蒙系统DAYU200教程及Tina Wi-Fi模组移植

    ] 支持开源鸿蒙系统 DAYU200 镜像烧录教程【问答】请问下HiHope_DAYU200 如何搭建编译开发环境?[经验]作品分享-基于RT-Thread系统和N32G457开发
    发表于 03-15 15:32

    鸿蒙开源第三方组件资料合集

    开发者使用或优化,能够提升应用的丰富性和可操作性。组件效果展示组件中可以通过操作图片、裁切框、按钮,最终实现在图片中裁切部分区域并进行显示的效果,组件的运行效果如图1所示。3、
    发表于 03-23 09:53

    鸿蒙开源全场景应用开发资料汇总

    1鸿蒙开源全场景应用开发——视频编解码面对鸿蒙这一全新的生态,广大消费者在积极尝鲜的同时,家中不可避免会出现安卓设备和
    发表于 03-23 10:09

    基于AndroidCrop进行鸿蒙化的开源图片裁剪组件

    本项目是基于开源项目 AndroidCrop 进行鸿蒙化的移植和开发的,可以通过项目标签以及github地址( https://github.com/jdamcd/android-crop )追踪到
    发表于 03-23 09:53 2次下载

    openharmony开源社区 OpenHarmony开发上新了

    openharmony开源社区 OpenHarmony开发上新了 OpenHarmony 开源项目是由开放原子
    的头像 发表于 04-25 16:37 3176次阅读

    OpenHarmony创意开发亮相HDC2022 共创欣欣向荣的“开源雨林”

    开发展品,适配OpenHarmony的各个版本,满足不同行业与开发者对不同类型设备的开发,让到场的不少
    的头像 发表于 11-22 17:38 1216次阅读
    OpenHarmony创意<b class='flag-5'>开发</b><b class='flag-5'>样</b><b class='flag-5'>例</b>亮相HDC2022 共创欣欣向荣的“<b class='flag-5'>开源</b>雨林”

    HarmonyOS开发案例:【图片编辑

    基于ArkTS的声明式开发范式的,主要介绍了图片编辑实现过程。
    的头像 发表于 04-23 20:54 1280次阅读
    HarmonyOS<b class='flag-5'>开发</b>案例:【<b class='flag-5'>图片</b><b class='flag-5'>编辑</b>】

    2025开源鸿蒙开发者大会圆满落幕

    近日,开源鸿蒙开发者大会2025(OHDC.2025,简称“大会”)在深圳隆重开幕。大会正式发布了开源鸿蒙5.1 Release版本,举行了
    的头像 发表于 05-26 17:03 1159次阅读

    华为亮相2025开源鸿蒙开发者大会

    近日,开源鸿蒙开发者大会2025(以下简称大会)在深圳成功举办。大会以开源鸿蒙5.1 Release版本发布为契机,聚焦
    的头像 发表于 05-29 09:07 1122次阅读