【一起来学习鸿蒙开发】HarmonyOS拍摄美化类行业实践-图库照片滤镜添加

65 阅读1分钟
即日起至12月31日,加入班级并成功考取【HarmonyOS开发者基础/高级证书】+发布一篇技术文章,即可解锁“通关成就”,有机会赢取官方限定礼品! 礼品数量有限,手速要快!点击加入,让你的努力闪闪发光!✨

场景介绍

为照片添加滤镜是拍摄美化应用的高频使用场景之一,如用户对图库(相册)里的照片进行美化时需要添加滤镜。

本示例基于@ohos.effectKit实现图片滤镜,再通过@ohos.file.fsSaveButton组件实现图片存储。

效果预览

实现思路

  1. 通过PhotoViewPicker拉起图库(相册),读取选中图片的数据。

  2. 通过@ohos.effectKit处理图像实现滤镜效果。

  3. 通过SaveButton组件保存图片至图库(相册)。

    // 读取数据getPixelMapFromGallery(context).then((pixelMap?: image.PixelMap) => {  if (pixelMap) {    this.pixelMap = pixelMap;  };})// 添加滤镜,以粉色滤镜为例this.pixelMapChanged = await pinkColorFilter(this.pixelMap);// 保存图片至图库SaveButton({ text: SaveDescription.SAVE })  .onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {    if (result === SaveButtonOnClickResult.SUCCESS) {      // 保存图片    } else {      promptAction.showToast({ message: $r('app.string.save_failed') })    }  })
    

约束与限制

  • 本示例支持API Version 16 Release及以上版本。
  • 本示例支持HarmonyOS 5.0.4 Release SDK及以上版本。
  • 本示例需要使用DevEco Studio 5.0.4 Release及以上版本进行编译运行。

工程目录

├──entry/src/main/ets│  ├──constants│  │  └──CommonConstants.ets      //  样式常量│  ├──entryability│  │  └──EntryAbility.ets         // 入口│  ├──pages│  │  └──MainPage.ets             //  首页│  ├──utils│  │  ├──FilterUtil.ets           //  滤镜工具│  │  └──ImageUtil.ets            //  图片工具│  └──viewModel│     ├──IconListViewModel.ets    //  滤镜组件数据│     └──OptionViewModel.ets      //  滤镜类型枚举└──entry/src/main/resources     // 应用资源目录

参考文档

@ohos.effectKit(图像效果)

@ohos.file.fs(文件管理)

SaveButton

Class(PhotoViewPicker)

代码下载

图库照片滤镜添加示例代码