详细介绍:鸿蒙Next图片开发指南:从解码、处理到接收的完整实践

news/2026/1/23 19:45:58/文章来源:https://www.cnblogs.com/yangykaifa/p/19523887

在鸿蒙应用开发中,图片作为最核心的视觉元素之一,其处理流程的性能和体验至关重要。鸿蒙Next提供了一套强大而统一的图片框架(Image Framework),为开发者提供了从加载到显示,从编辑到保存的全链路能力。本文将深入探讨图片开发的四个关键环节:解码、编码、编辑处理接收,并通过代码示例展示如何高效地完成相关任务。

一、图片解码:高效的图片加载与显示

图片解码是将压缩的图片数据(如JPEG、PNG)转换为系统可识别和渲染的像素数据(PixelMap)的过程。鸿蒙Next的@ohos.multimedia.image模块让这个过程变得简单且高性能。

核心能力:

  • 多格式支持:全面支持JPEG、PNG、WEBP、GIF、BMP、HEIF等主流格式。

  • 渐进式与动图解码:支持JPEG渐进式加载和GIF动图的流畅播放。

  • 精准采样与缩放:可在解码时直接指定采样率或目标尺寸,减少内存占用,这是避免OOM(内存溢出)的关键技巧。

实战代码:从资源文件解码并显示

typescript

import image from '@ohos.multimedia.image';
import { BusinessError } from '@ohos.base';@Entry
@Component
struct ImageDecodeSample {// 用于在UI中展示的PixelMap对象@State pixelMap: image.PixelMap | undefined = undefined;aboutToAppear() {// 1. 创建ImageSource对象,来源可以是资源、文件、ArrayBuffer等const imageSourceApi = image.createImageSource($r('app.media.example.jpg').id);// 2. 设置解码参数:希望输出的尺寸let decodingOptions: image.DecodingOptions = {desiredSize: { width: 200, height: 200 } // 直接解码为200x200的图,节省内存};// 3. 异步解码,获取PixelMapimageSourceApi.createPixelMap(decodingOptions).then((pixelMap: image.PixelMap) => {this.pixelMap = pixelMap;console.log('图片解码成功');}).catch((error: BusinessError) => {console.error(`解码失败,错误码:${error.code}, 信息:${error.message}`);});}build() {Column() {if (this.pixelMap) {// 使用PixelMap给Image组件赋值Image(this.pixelMap).width(200).height(200)} else {LoadingProgress() // 解码未完成时显示加载动画}}.width('100%').height('100%')}
}
二、图片编码:保存与分享

图片编码是将处理后的PixelMap对象压缩为指定格式文件的过程,常用于保存图片到相册或分享给其他应用。

核心能力:

  • 格式转换:支持将PixelMap编码为JPEG、PNG、WEBP等格式。

  • 质量参数可控:对于JPEG等有损格式,可以灵活设置压缩质量。

实战代码:将PixelMap编码为JPEG并保存

typescript

import image from '@ohos.multimedia.image';
import fileIo from '@ohos.file.fs'; // 文件系统模块async function encodeAndSaveImage(pixelMap: image.PixelMap) {// 1. 创建ImagePacker对象,用于编码let imagePackerApi = image.createImagePacker();// 2. 设置编码选项:格式和质量let packOptions: image.PackingOptions = {format: "image/jpeg",quality: 85 // 质量范围1-100,值越大质量越好文件越大};try {// 3. 进行编码,获取ArrayBuffer数据let data: ArrayBuffer = await imagePackerApi.packing(pixelMap, packOptions);// 4. 将ArrayBuffer数据写入文件let filePath = `/path/to/your/saved_image.jpg`; // 替换为实际可写的路径let file = await fileIo.open(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);await fileIo.write(file.fd, data);await fileIo.close(file.fd);console.log('图片保存成功:' + filePath);} catch (error) {const err: BusinessError = error as BusinessError;console.error(`编码或保存失败:${err.code}, ${err.message}`);}
}
三、图片编辑和处理:释放创造力

这是最富有趣味和挑战性的环节,鸿蒙Next通过Image Kit (@ohos.multimedia.imageKit) 提供了丰富的编辑能力。

核心能力:

  • 基础调整:旋转、裁剪、缩放。

  • 滤镜与调色:应用LUT滤镜,调整亮度、对比度、饱和度等。

  • AI增强:智能抠图、人像美颜、图像超分等(部分为高级API)。

实战代码:应用滤镜并裁剪

typescript

import imageKit from '@ohos.multimedia.imageKit';async function editImage(sourcePixelMap: image.PixelMap): Promise {try {// 1. 应用滤镜let filterOptions: imageKit.FilterOptions = {filter: imageKit.FilterType.FILTER_SNOW // 例如,使用“雪”滤镜};let filteredPixelMap: image.PixelMap = await imageKit.filter(sourcePixelMap, filterOptions);// 2. 进行裁剪let region: image.Region = { // 定义裁剪区域x: 50,y: 50,size: {height: 300,width: 300}};let croppedPixelMap: image.PixelMap = await imageKit.crop(filteredPixelMap, region);return croppedPixelMap;} catch (error) {const err: BusinessError = error as BusinessError;console.error(`图片编辑失败:${err.code}, ${err.message}`);// 失败则返回原图return sourcePixelMap;}
}
四、图片接收:处理外部传入的图片

当应用需要接收来自其他应用(如相册、文件管理器、分享菜单)的图片时,需要使用WantFile相关能力。

核心能力:

  • 统一数据管理:通过ohos.app.ability.wantConstant定义的行为(Action)来接收数据。

  • 安全的文件访问:通过Uri安全地访问其他应用提供的图片文件。

配置与实战:使应用能够接收图片

1. 在module.json5中配置Ability的skills,使其响应分享动作。

json

"skills": [{"entities": ["entity.system.home"],"actions": ["ohos.want.action.selectMedia", // 选择媒体文件的行为"ohos.want.action.sendData"     // 发送数据的行为(如分享)],"uris": [{"type": "image/*" // 指定可接收的文件类型为所有图片}]}
]

2. 在EntryAbility中接收并处理图片数据。

typescript

import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import Want from '@ohos.app.ability.Want';export default class EntryAbility extends UIAbility {onWindowStageCreate(windowStage: window.WindowStage) {// ... 其他初始化代码}// 当Ability被创建时,通过want参数接收数据onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {// 判断want中是否包含图片Uriif (want.uri && want.uri.length > 0) {let receivedImageUri = want.uri;console.log(`接收到图片URI: ${receivedImageUri}`);// 将URI传递给Page,由Page进行解码和显示AppStorage.setOrCreate('receivedImageUri', receivedImageUri);}}
}

3. 在Page中根据Uri解码图片。

typescript

// 在Page的aboutToAppear或自定义函数中
let receivedUri: string = AppStorage.get('receivedImageUri');
if (receivedUri) {// 使用Uri创建ImageSourceconst imageSourceApi = image.createImageSource(receivedUri);imageSourceApi.createPixelMap().then((pixelMap: image.PixelMap) => {// 获取到PixelMap,可以显示或编辑this.receivedPixelMap = pixelMap;});
}
总结

鸿蒙Next的图片框架构建了一条清晰、高效的开发路径:

  1. 解码:使用createImageSourcecreatePixelMap,注重性能和内存。

  2. 编码:使用createImagePackerpacking,灵活控制输出格式和质量。

  3. 编辑:使用Image Kit,轻松实现从基础到AI级的复杂效果。

  4. 接收:通过配置skills和解析want.uri,实现流畅的应用间协作。

掌握这四大模块,你就能在鸿蒙生态中游刃有余地构建出体验卓越的图片类应用。现在,就请将这些知识付诸实践,创造出让用户眼前一亮的视觉体验吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年彩钢瓦设备厂家推荐榜单:琉璃瓦/墙面板/角驰瓦/不锈钢波浪板/数控高速/双层一机多用/冷弯耐用工业级高精度全自动及CZ型钢U型钢设备精选

2026年彩钢瓦设备行业深度解析与权威厂家推荐榜单 随着全球工业化进程的加速和建筑建材行业的持续升级,彩钢瓦及各类冷弯成型设备作为现代工业建筑、仓储物流、公共设施等领域不可或缺的基础生产装备,其市场需求与技…

TB311FU原厂刷机包免费下载_CN_ZUI_17

原厂刷机包下载 https://pan.quark.cn/s/7bcaee17dad9昭阳K10C原厂刷机包下载 转载请标注来源:https://www.cnblogs.com/mianfeijiaocheng/p/19523885 所有固件都是我手动上传的,不是机器人或程序,保持固件更新不是…

2026年 桌椅租赁服务商推荐排行榜:活动/会议/展会/户外/宴会/演出/定制/婚礼/庆典/年会/办公桌椅租赁,专业高效与场景适配度深度解析

2026年桌椅租赁服务商推荐排行榜:专业高效与场景适配度深度解析 在当今快节奏的商业与社会活动中,无论是举办一场盛大的国际会议、一个前沿的行业展会,还是一场温馨的婚礼庆典,专业、高效且与场景高度适配的桌椅租…

针对语音识别场景,企业算力平台建设的5个关键要点

从“听得见”到“听得懂”:企业语音识别算力平台建设的5个关键胜负手 关键词 语音识别算力、GPU集群、低延迟推理、数据并行训练、算力弹性调度、模型压缩优化、成本效益 摘要 当用户对着智能音箱说“播放周杰伦的歌”,或客服系统自动转写通话记录时…

知行合一的价值革命:《AI元人文:悟空而行》的范式突破与智能时代治理重构(扩展版)

知行合一的价值革命:《AI元人文:悟空而行》的范式突破与智能时代治理重构(扩展版) 摘要 本文旨在对《AI元人文:悟空而行——智能时代的价值决断与合法性重建》进行系统性阐释与深度拓展,将其置于跨学科的思…

AI芯片设计中的硬件加速反馈循环方案

AI芯片设计中的硬件加速反馈循环方案关键词:AI芯片、硬件加速、反馈循环、计算优化、能效比、实时调整、自适应架构摘要:在AI算力需求呈指数级增长的今天,传统芯片“固定架构通用计算”的模式已难以满足深度学习的高效需求。本文将以“硬件加…

一天一个Python库:idna - 处理国际化域名的神器

idna - 处理国际化域名的神器 一、什么是idna? idna 是一个用于处理国际化域名(Internationalized Domain Names, IDNA)的 Python 库。IDNA 允许域名包含非 ASCII 字符,例如中文、日文、阿拉伯文等。 它可以帮助你…

2026年 光亮剂厂家推荐排行榜:促裕抛光/电镀光亮剂,镍铜锡金银全系列高效抛光解决方案深度解析

2026年光亮剂厂家推荐排行榜:促裕抛光/电镀光亮剂,镍铜锡金银全系列高效抛光解决方案深度解析 在精密制造与表面处理领域,光亮剂作为提升产品外观品质、增强耐腐蚀性及功能性的关键化学添加剂,其重要性日益凸显。随…

TB350FU原厂刷机包免费下载_CN_ZUI_17

原厂刷机包下载https://pan.quark.cn/s/7bcaee17dad9联想平板小新Pad Plus 2023 11.5英寸原厂刷机包下载 转载请标注来源:https://www.cnblogs.com/mianfeijiaocheng/p/19523859 所有固件都是我手动上传的,不是机器人…

基于大数据的农产品价格预测数据分析与可视化系统

目录摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作摘要 该系统旨在利用大数据技术对农产品价格进行精准预测,并通过可视化手段直观展示分析结果,为农业生产者、经销商及政策制…

深度测评8个AI论文平台,专科生毕业论文轻松搞定!

深度测评8个AI论文平台,专科生毕业论文轻松搞定! AI 工具如何助力论文写作? 在当今数字化时代,AI 工具已经成为许多学生和科研工作者的重要助手。尤其是对于专科生而言,面对毕业论文的撰写任务,常常会感到无…

基于大数据的出行路线规划与推荐系统 数据分析可视化大屏系统

目录 大数据驱动的出行路线规划与推荐系统数据分析可视化大屏系统技术整合与创新 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 大数据驱动的出行路线规划与推荐系统 该系统基于多源异构数据&#xff0…

二叉树层序遍历(BFS)完全指南:从基础到实战

一、层序遍历核心概念 1.1 什么是层序遍历? 层序遍历(Level Order Traversal)是一种广度优先搜索(BFS) 算法,它按照树的层次,从上到下、从左到右逐层访问每个节点。 示例二叉树:1 ← 第1层/ \2 3 ← 第2层/ \ \4 5 6 ← 第3层层序遍历结果:[[1…

基于大数据的大学生就业信息推荐系统的 爬虫数据可视化大屏分析系统

目录 大数据驱动的就业信息推荐与可视化分析系统 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 大数据驱动的就业信息推荐与可视化分析系统 该系统整合大数据技术与可视化分析,构建面向大学…

基于大数据的旅游景点推荐系统的设计与实现

目录摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作摘要 随着旅游业的快速发展,游客对个性化旅游体验的需求日益增长。传统的旅游推荐系统主要依赖人工筛选或简单规则,难以满足…

基于大数据的高校毕业生招聘信息推荐系统 爬虫 数据分析可视化大屏系统mpohdj33

目录大数据驱动的高校毕业生招聘信息推荐系统项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作大数据驱动的高校毕业生招聘信息推荐系统 该系统整合了爬虫技术、数据分析与可视化大屏,旨在为高校…

flask python旅游景点印象服务系统

目录基于Flask的旅游景点印象服务系统摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作基于Flask的旅游景点印象服务系统摘要 该系统采用Python的Flask框架开发,旨在为用户提供旅游景点的印…

Python基于大数据的图书推荐系统的协同过滤算法的爬虫 数据可视化分析系统9w4u33nr

目录协同过滤算法的核心原理爬虫系统设计要点大数据处理流程可视化分析模块实现系统优化方向项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作协同过滤算法的核心原理 协同过滤算法通过分析用户历史行为数据…

基于大数据大数据分析的化妆品销售系统 美妆商城系统 爬虫可视化分析系统

目录大数据驱动的化妆品销售与美妆商城系统分析爬虫技术在数据采集中的应用可视化分析系统的功能实现核心技术架构与算法模型实际应用价值与效益项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作大数据驱动的…

二叉树--求最小深度(迭代和递归)

使用了两种解法,递归法和迭代法。两种方法的对比总结DFS (方法一 minDepth):特点: 代码简洁,逻辑通过 max 巧妙处理了单链树的情况。缺点: 必须遍历完所有的分支才能确定谁最小。如果树严重左偏或右偏,栈深度较大。BFS (方法二 levelOrder):特…