鸿蒙(API 12 Beta3版)【使用ImagePacker完成图片编码】图片开发指导

news2024/11/17 13:18:57

图片编码指将PixelMap编码成不同格式的存档图片(当前仅支持打包为JPEG、WebP 和 png 格式),用于后续处理,如保存、传输等。

开发步骤

图片编码进文件流

  1. 创建图像编码ImagePacker对象。
// 导入相关模块包
import { image } from '@kit.ImageKit';

const imagePackerApi = image.createImagePacker();
  1. 设置编码输出流和编码参数。
  • format为图像的编码格式;quality为图像质量,范围从0-100,100为最佳质量

说明

根据MIME标准,标准编码格式为image/jpeg。当使用image编码时,PackingOption.format设置为image/jpeg,image编码后的文件扩展名可设为.jpg或.jpeg,可在支持image/jpeg解码的平台上使用。

let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 };
  • 编码为hdr内容(需要资源本身为hdr,支持jpeg格式)
packOpts.desiredDynamicRange = image.PackingDynamicRange.AUTO;
  1. [创建PixelMap对象或创建ImageSource对象]

  2. 进行图片编码,并保存编码后的图片。

方法一:通过PixelMap进行编码。

import { BusinessError } from '@kit.BasicServicesKit';
imagePackerApi.packing(pixelMap, packOpts).then( (data : ArrayBuffer) => {
  // data 为打包获取到的文件流,写入文件保存即可得到一张图片
}).catch((error : BusinessError) => { 
  console.error('Failed to pack the image. And the error is: ' + error); 
})

方法二:通过imageSource进行编码。

import { BusinessError } from '@kit.BasicServicesKit';
imagePackerApi.packing(imageSource, packOpts).then( (data : ArrayBuffer) => {
    // data 为打包获取到的文件流,写入文件保存即可得到一张图片
}).catch((error : BusinessError) => { 
  console.error('Failed to pack the image. And the error is: ' + error); 
})

图片编码进文件

在编码时,开发者可以传入对应的文件路径,编码后的内存数据将直接写入文件。

方法一:通过PixelMap编码进文件。

import { BusinessError } from '@kit.BasicServicesKit';
import { fileIo } from '@kit.CoreFileKit';
const context : Context = getContext(this);
const path : string = context.cacheDir + "/pixel_map.jpg";
let file = fileIo.openSync(path, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
imagePackerApi.packToFile(pixelMap, file.fd, packOpts).then(() => {
    // 直接打包进文件
}).catch((error : BusinessError) => { 
  console.error('Failed to pack the image. And the error is: ' + error); 
})

方法二:通过imageSource编码进文件。

import { BusinessError } from '@kit.BasicServicesKit';
import { fileIo } from '@kit.CoreFileKit';
const context : Context = getContext(this);
const filePath : string = context.cacheDir + "/image_source.jpg";
let file = fileIo.openSync(filePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
imagePackerApi.packToFile(imageSource, file.fd, packOpts).then(() => {
    // 直接打包进文件
}).catch((error : BusinessError) => { 
  console.error('Failed to pack the image. And the error is: ' + error); 
})

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1

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

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

相关文章

IOC/DI注解开发

IOC/DI(Inversion of Control/Dependency Injection)是一种依赖注入的软件设计模式,它的核心思想是将对象的创建和依赖关系的管理从代码中抽离出来,交给外部容器来管理。这种设计模式可以提高代码的可维护性、可测试性和可扩展性。…

【包教包会】怎么购买海外域名?Namecheap+虚拟卡购买步骤详解

前言 为什么要用海外域名? 首先,胖虎要介绍一下为什么要使用海外域名,使用国内的域名不好吗?主要是出于以下几个原因供大家参考,主要是涵盖了品牌保护、市场拓展、灵活性和创新性等多个方面: 品牌保护&a…

油耳朵用什么耳勺?揭露行业的五大隐患套路!

油耳清洁是很多人的一个困惑,由于外耳道分泌油性耵聍过多而导致。油耳使用传统耳勺和棉签很容易掏不干净,而可视挖耳勺采用了柔软且耐用的材料制成,可以避免因材料过硬对耳道造成损伤。并且用户可以通过摄像头清晰地看到耳道内的情况&#xf…

Java导出DBF文件(附带工具类)

导出DBF文件 先看效果 JavaDBF 使用JavaDBF库 数据类型映射 写入支持的类型 类型XBase类型XBase 符号JavaDBF 中使用的 Java 类型字符CharacterCjava.lang.String数值NumericNjava.math.BigDecimal浮点Floating PointFjava.math.BigDecimal布尔LogicalLjava.lang.Boolea…

公司如何监控员工电脑,怎么监控电脑进程

在现代企业管理中,监控员工电脑的行为已成为确保工作效率、数据安全和合规性的重要措施。通过合理的监控手段,企业可以预防潜在的安全威胁,优化工作流程,并确保员工遵循公司的政策和规定。 公司监控员工电脑的常见方法 屏幕监控&…

什么是pk答题软件源码

答题软件的源码是开发答题软件的基础程序代码。由于答题软件的功能和复杂程度不同,其源码也会有很大差异。 一般来说,答题软件的源码可能包含以下几个主要部分: 一、用户界面部分 登录和注册界面: 允许用户输入用户名、密码等信…

C++资料电子书资源PDF免费分享

C电子书 这里写目录标题 C电子书目录资源获取 目录 《数据结构(C语言版)》(严蔚敏 吴伟明编著).pdf 7.6MB 《C程序设计题解与上机指导》(第二版).谭浩强.pdf 7.0MB 《C程序设计(第四版)学习辅导》.谭浩强.扫描版.pdf 13.1MB 《C程序设计》第一版(谭浩强&#xff09…

个人笔记--python画图(一维,二维,三维)

1. 一维 1. plot import numpy as np import matplotlib.pyplot as plt# linspace(): 创建等间距的数值序列 x np.linspace(0, 2 * np.pi, 100)u np.sin(x)# 绘制一维图形 plt.figure() plt.plot(x, u) plt.title(Plot of sin(x)) plt.xlabel(x) plt.ylabel(sin(x)) plt.sh…

监控摄像头能看到电脑屏幕吗?公司监控摄像头拍员工电脑屏幕!

监控摄像头已经成为许多企业和公共场所不可或缺的安全管理工具。 它们不仅守护着物理空间的安全,也在一定程度上影响着企业的运营管理和员工的行为规范。 然而,当“公司监控摄像头拍员工电脑屏幕”这一话题被提出时,不禁引发了广泛的讨论与…

Sketch for mac(专业矢量绘图设计软件100.3版) 中文激活版 一键快速安装!

Sketch 是一款专为 macOS 设计的专业矢量图形编辑软件,自发布以来便成为 UI/UX 设计师首选的工具之一。其简洁高效的用户界面、强大的设计功能,以及与 macOS 系统的深度集成,使得 Sketch 在设计领域享有很高的声誉。无论是移动应用设计、网页…

PT:如何获取net的Delta delay信息

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 来自星球提问: crosstalk的Delta delay可以从三个渠道获取: report_timing

监控用户登录信息,执行事务码情况

CMOD->SUSR0001 *&---------------------------------------------------------------------* *& 包含 ZXUSRU01 *&---------------------------------------------------------------------*DATA:lv_sblm_obj TYPE sblm_obj.CALL FUNCTION ZFMB…

2-Git远程仓库

Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。 一、配置远程仓库 1.注册登录Gitee/Github GitHub 地址&am…

【ComfyUI Flux_dev_gguf】 AI绘画提示词,轻松实现AI仰角摄影技巧。秒出AI大片~

前言 **hello,大家好,我是老徐,热爱AI,一路同行,与你相伴~喜欢的可以关注老徐,**在文章底部添加老徐微信,加入老徐AI绘画交流群 今天老徐简单和大家分享下基于ComfyUI Flux_dev_gguf 工作流&…

CX1020 N010处理器CX1020-N010模块面价

CX1020 N010处理器CX1020-N010模块面价 CX1020 N010处理器CX1020-N010模块面价 CX1020 N010处理器CX1020-N010模块面价 CX1020-N010处理器CX1020 N010模块引脚线 CX1020-N010处理器CX1020 N010模块接线图 CX1020-N010处理器CX1020 N010模块电路图 CX1020-N010中央处理器&…

R 2火灾温度预测

火灾温度预测 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 使用LSTM进行时间序列预测 这周学习如何使用长短期记忆网络(LSTM)进行时间序列预测。使用PyTorch框架来构建和训练模型&…

【大数据算法】一文掌握大数据算法之:时间亚线性算法。

时间亚线性算算法 1、引言2、时间亚线性算法2.1 定义2.2 分类2.3 核心原理2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥,大数据算法知识难不难啊? 小鱼:你在职场打拼这么多年,竟然还能问出来这个问题。 小屌…

婚恋交友系统该如何制作成品系统?

制作婚恋交友系统的成品系统是一个综合性的过程,涉及多个关键步骤和技术要点。以下是一个详细的制作流程: 1. 需求分析 市场调研:首先需要对婚恋交友市场进行深入调研,了解目标用户群体的需求、喜好、习惯以及市场痛点。用户画像…

C学习(数据结构)--> 实现顺序结构二叉树

目录 一、堆的概念与结构 性质 二叉树的性质 二、堆的实现 1、结构 2、初始化与销毁 3、入堆与出堆(小堆) 1)Swap 2)入堆 1 数据的向上调整 2 入堆 3)出堆 1 数据的向下调整 2 出堆 三、其他 1、入堆与出…

解决Github无法连接codespace情况

使用这个DNS即可 CN - 中国互联网络信息中心CNNIC SDNS1.2.4.8,,True 参见: GitHub 无法访问解决办法 - 哔哩哔哩