可可圖片編輯 HarmonyOS 上架應用分享
介紹
可可圖片編輯 原名 圖片編輯大師,因為上架審核的時候 ,提示與一些已有應用重名,為了避免沖突,需要改名字,所以苦心思考了一分鐘,就調整成 可可圖片編輯。
應用
應用商店訪問鏈接
https://appgallery.huawei.com/app/detail?id=tupianbmjidashi.qinglanzhuma.huawei&channelId=SHARE
功能展示
可可圖片編輯提供了圖片處理的六大核心功能
- 圖片壓縮
- 圖片裁剪
- 濾鏡效果
- 添加水印
- 圖片繪畫
- 圖片拼圖
其中比較有意思的是也實現了圖片的分享功能,這個在開發的時候也是調試了一段時間。
開發和上架過程
這個APP的開發過程是可以說是有90%是AI完成的,確實也摸索出一些自己的心得,上架過程只被打回一次,后續再提交也就通過了,還是挺順利。
開發時間
立項的初衷
? 抱著學習的心態來做產品,是最好驗收自己掌握技能與否的方法,也是讓自己所有的投入得到成就感的最好的方式。
之前就一直想著好好梳理下 HarmonyOS 中 關于 Image 相關 Kit的一些用法,正好就借這個機會來實現了。
能看到,這個Image的kit還是可以做不少的功能到,都可以直接在鴻蒙手機上來完成了。
開發環境與技術棧
- 開發工具:DevEco Studio 5.0+
- SDK版本:HarmonyOS SDK API 14+
- 開發語言:ArkTS
- UI框架:ArkUI
- 路由管理:ZRouter 1.6.1
- 狀態管理:V2狀態管理(@ComponentV2 + @Local/@Param)
狀態管理策略
項目全面采用HarmonyOS V2狀態管理方案,相比V1版本具有更好的性能和更簡潔的API:
@Entry
@Route({ name: 'CompressionPage', useTemplate: true })
@ComponentV2
export struct CompressionPage {@Local selectedImage: ImageInfo | null = null;@Local compressionParams: CompressionParams = {quality: 80,scale: 1.0,format: ImageFormat.JPEG,type: CompressionType.QUALITY,mode: CompressionMode.MANUAL,keepAspectRatio: true};@Local compressionResult: CompressionResult | null = null;@Local operationState: OperationState = OperationState.IDLE;
}
智能圖片壓縮算法
圖片壓縮是應用的核心功能之一,我們實現了一套智能壓縮算法,支持三種壓縮模式:
壓縮參數接口設計
export interface CompressionParams {quality: number; // 壓縮質量 (0-100)scale: number; // 縮放比例 (0.1-1.0)format: ImageFormat; // 目標格式type: CompressionType; // 壓縮類型mode: CompressionMode; // 壓縮模式keepAspectRatio: boolean; // 是否保持寬高比maxFileSize?: number; // 最大文件大小 (KB)maxWidth?: number; // 最大寬度maxHeight?: number; // 最大高度
}
自適應壓縮算法
針對按文件大小壓縮的需求,我們實現了基于二分查找的自適應壓縮算法:
export async function compressImageBySize(imageUri: string, params: CompressionParams
): Promise<CompressionResult> {const targetSize = (params.maxFileSize || 1024) * 1024; // 轉換為字節// 二分查找最佳壓縮參數let minQuality = 10;let maxQuality = params.quality;while (maxQuality - minQuality > 5) {const currentQuality = Math.floor((minQuality + maxQuality) / 2);// 嘗試當前質量參數const compressedData = await compressWithQuality(imageUri, currentQuality);if (compressedData.byteLength <= targetSize) {minQuality = currentQuality;} else {maxQuality = currentQuality;}}return bestResult;
}
后續計劃
后續繼續分享這個應用的實現細節,敬請期待。
以往文章
- 懂你的HarmonyOS知識庫更新了,已經來到10970個文檔了
- 鴻蒙開發者狂喜!5000 元 / 個應用的羊毛快來薅
- AI編程神器!Trae+Claude4.0 簡單配置 讓 HarmonyOS 開發效率飆升
近期活動
最近想要想要考取 HarmonyOS 基礎或者高級證書,或者快要獲取的同學都可以點擊這個鏈接,加入我的班級,考取成功有機會獲得鴻蒙禮盒一份。
聯系我
可以加我微信,帶你了解更多HarmonyOS相關的咨詢。