【拆·應用】是為開源鴻蒙應用開發者打造的技術分享平臺,是匯聚開發者的技術洞見與實踐經驗、提供開發心得與創新成果的展示窗口。誠邀您踴躍發聲,期待您的真知灼見與技術火花!
引言
本期內容介紹基于開源鴻蒙在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" 字段添加。

c)并重新進行應用簽名。
添加相冊圖片:
1. 添加相冊圖片
a)Cloumn容器中包含Image和Text組件,點擊后調用GetPictures.getImage()。

b)在GetPictures.getImage()中首先使用@ohos.file.photoAccessHelper拉起圖庫選擇圖片,然后將選擇的圖片用imgaeList數組保存路徑,點擊完成跳轉到首頁。

c)首頁判斷imageList長度大于0,通過Grid組件從imageList中獲取圖片,并設置點擊事件點擊進入UpdatePages頁面。

編輯圖片:
1.編輯圖片主頁面
a)添加圖片完成后,點擊圖片進入編譯圖片updatePages頁面。
b)updatePages頁面中通過readImage獲取圖片。

c)通過imgae和Text組件繪制編輯圖標和文字,點擊后進入EditImages頁面。

d)編輯頁面底部菜單欄會根據this.currentTask狀態顯示,默認為Task.ADJUST狀態,即顯示this.getAdjustTool()和this.getFirstLvMenu()自定義組件。

e)this.getAdjustTool()通過List組件展示裁剪、旋轉、調試、色域等編輯選項,點擊裁剪后將this.currentTask設置為裁剪狀態,點擊其他的編輯選項,設置this.currentTask其他的狀態,并設置this.cancelOkText,從而刷新底部菜單欄的顯示。


2.裁剪
a)通過List組件展示比例選項,包括原圖、4:3、16:9、1:1四種比例,設置點擊事件,
獲取當前比例,根據當前比例調用this.cropImage()方法進行裁剪。

b)在this.cropImage()中調用pixmap.crop方法,并傳入計算后的size和坐標進行圖片按比例裁剪。

c)裁剪完成后點擊√保存,并返回主編輯菜單,其他編輯操作也是點擊保存并返回。

3.旋轉
旋轉分為順時針和逆時針90度旋轉,調用this.pixmap.rotate()接口,旋轉后也是點擊右下角√保存旋轉后的結果,返回主編輯菜單。

4.調色
a)調色目前實現的功能是調節亮度,通過Slider滑動組件直觀展示亮度進度條,監聽
onChange滑動事件調用this.brightChange()調節圖片亮度。

b)brightChange中,先將this.pixelMap賦值給this.brightnessOriginBM,再通過createEffect創建Filter實例,通過Filter圖像效果類中的brightness,實現亮度調節。


5.色域
a)點擊色域,進入ColorSpacePage頁面。

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

結語
以上是本樣例具體功能模塊的實現,通過本樣例讓開發者們了解到如何拉起圖庫選擇圖片、創建圖片源實例、實現圖片的編輯功能,標記圖片以及進行離屏繪制保存新圖片的功能將在下篇介紹。除此之外,開源鴻蒙也提供了豐富的基礎組件和其他功能模塊,依托開源特性可靈活定制底層功能,借助分布式架構實現 “一次開發,多端部署”,大幅降低跨設備協同開發成本,一系列配套的開發工具和教程可讓開發者快速上手,歡迎更多的開發者加入到開源鴻蒙應用開發中,創造更多奇思妙想的應用。
供稿:開發者與活動運營組 劉麗紅
-
開源
+關注
關注
3文章
4056瀏覽量
45651 -
鴻蒙
+關注
關注
60文章
2874瀏覽量
45449 -
RK3568
+關注
關注
5文章
628瀏覽量
7610
原文標題:拆·應用 | 第七期(上):基于開源鴻蒙的圖片編輯開發樣例
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄

基于開源鴻蒙的圖片編輯開發樣例(1)
評論