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

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

3天内不再提示

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

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

扫码添加小助手

加入工程师交流群

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

引言

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

样例简介

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

使用说明

添加文字:点击标记,再点击文字,弹出输入框,输入文字后,文字会添加到图片上,可拖动粘贴框改变粘贴的位置,选择颜色修改文字颜色。

添加贴纸:点击贴纸,可以滑动选择不同的贴纸添加到图片上,可拖动粘贴框改变粘贴的位置,点击√将贴纸添加到图片上,并返回主编辑页面。

保存图片:点击右上角的保存图标,保存编译后的图片到应用沙箱路径。

样例代码拆解

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

标记图片

1.标记图片主页面

a)点击底部菜单栏标记按钮,设置this.currentTask为Tasks.MARK,显示标记图片主操作页面。

8789a338-b575-11f0-8c8f-92fbcf53809c.png

b)this.currentTask为Tasks.MARK时,调用this.getMarkTool()刷新底部菜单栏。

87ea87d4-b575-11f0-8c8f-92fbcf53809c.png

c)在getMarkTool中显示文字和贴纸标记选项,点击调用this.onSelectItem()添加文字和贴纸。

8844d18a-b575-11f0-8c8f-92fbcf53809c.png889d3384-b575-11f0-8c8f-92fbcf53809c.png

2.添加文字

a)在onSelectItem中判断item.task为Tasks.TEXT,拉起自定义输入弹框。

88fd41ca-b575-11f0-8c8f-92fbcf53809c.png89548a5c-b575-11f0-8c8f-92fbcf53809c.png

b)dialogController中在InputTextDialog中通过TextInput组件输入文字,点击确定按钮后关闭弹框,调用this.confirm,即对应的的onAccept。

89aed570-b575-11f0-8c8f-92fbcf53809c.png

c)在onAccept()调用onSelectItem,传入参数maskDatas[0]就是Tasks.TEXT,以及hasInputText为true。

8a0c2db0-b575-11f0-8c8f-92fbcf53809c.png

d)判断hasInputText为true,设置this.currentTask为Tasks.TEXT,和this.cancelOkText,刷新底部菜单栏。

8a65efda-b575-11f0-8c8f-92fbcf53809c.png

e)根据this.currentTask为Tasks.TEXT,调用this.getMaterialTool()组件,并传入fontColors展示不同的颜色块。

8abfed5a-b575-11f0-8c8f-92fbcf53809c.png

f)在getMaterialTool中调用this.TextOrStickerScroll(),通过List组件展示不同的颜色色块,根据传入的materials判断是添加文字,点击色块改变文字颜色。

8b1a4f52-b575-11f0-8c8f-92fbcf53809c.png8b7ac008-b575-11f0-8c8f-92fbcf53809c.png

3.添加贴纸

a)在onSelectItem中判断item.task不是Tasks.TEXT,设置this.currentTask和this.cancelOkText,刷新底部菜单栏。

8bdd3b52-b575-11f0-8c8f-92fbcf53809c.png

b)添加贴纸和添加文字一样调用this.getMaterialTool(),但是传入stickers。

8c5b87e6-b575-11f0-8c8f-92fbcf53809c.png

c)在getMaterialTool中调用this.TextOrStickerScroll(),通过List组件展示不同的贴纸,根据传入的materials判断是添加贴纸,通过Image组件显示选择的贴纸。

8cb1c3cc-b575-11f0-8c8f-92fbcf53809c.png

4.标记图片

a)当this.currentTask为Tasks.TEXT或Tasks.STICKER时,通过MaterialEdit自定义组件将文字和贴纸添加到图片上。

8d10b36e-b575-11f0-8c8f-92fbcf53809c.png

b)MaterialEdit页面通过Image组件展示图片,通过RelativeContainer展示文字或贴纸,并根据拖动的坐标设置postion属性,从而改变文字或贴纸添加的位置。

8d6faafe-b575-11f0-8c8f-92fbcf53809c.png

c)在RelativeContainer中通过getMaterialBuilder展示文字或贴纸。

8dca3ff0-b575-11f0-8c8f-92fbcf53809c.png

d)通过getMaterialStyle接口设置组件的对齐方式,获取手势拖动坐标。

8e28502c-b575-11f0-8c8f-92fbcf53809c.png

e)将获取的this.centerX和this.centerY设置到.position属性,文字或贴纸位置。

8e8c8b46-b575-11f0-8c8f-92fbcf53809c.png

f)在MaterialEdit组件aboutToDisappear时,保存添加文字或贴纸的图片。

8ee54a06-b575-11f0-8c8f-92fbcf53809c.png

5.保存图片

a)编译完成后,点击保存按钮,调用this.onSave()保存编辑后的图片。

8f464ec8-b575-11f0-8c8f-92fbcf53809c.png

b)调用savePixelMap保存编辑后的图片并返回保存地址,地址为应用沙箱地址,本样例不是系统应用,故没有支持保存到系统相册。

8fa11448-b575-11f0-8c8f-92fbcf53809c.png

结语

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

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

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

    关注

    3

    文章

    4053

    浏览量

    45641
  • 代码
    +关注

    关注

    30

    文章

    4947

    浏览量

    73281
  • 鸿蒙
    +关注

    关注

    60

    文章

    2873

    浏览量

    45437
  • RK3568
    +关注

    关注

    5

    文章

    628

    浏览量

    7601

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HarmonyOS开发案例:【图片编辑

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

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

    开源鸿蒙生态建设中,多媒体能力是构建丰富用户体验的核心要素。本开发针对视频播放场景,聚焦开源
    的头像 发表于 08-19 10:41 1376次阅读
    基于<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 2398次阅读
    基于<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 3673次阅读
    基于<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>

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

    本期内容介绍基于开源鸿蒙在RK3568上开发图片编辑的全流程,分为上篇和下篇,本篇为上篇,主
    的头像 发表于 10-31 09:16 2842次阅读
    基于<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>(1)

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

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

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

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

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

    数据传回到鸿蒙大屏进行渲染显示,从而达到鸿蒙大屏进行美颜拍照的功能,其效果可以参考下图1:2鸿蒙开源全场景应用
    发表于 03-23 10:09

    华为鸿蒙系统怎么 鸿蒙值得升级吗

    华为鸿蒙系统怎么?在6月2日晚,华为举行了开发者大会,在会上华为发布了HarmonyOS 2以及多款搭载HarmonyOS
    的头像 发表于 06-28 10:13 1.7w次阅读

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

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

    openharmony开源社区 OpenHarmony开发上新了

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

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

    开发展品,适配OpenHarmony的各个版本,满足不同行业与开发者对不同类型设备的开发,让到场的不少
    的头像 发表于 11-22 17:38 1219次阅读
    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 1293次阅读
    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 1170次阅读

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

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