【HarmonyOS 5】ArrayBuffer转Base64,Base64转ArrayBuffer,Uri转ArrayBuff,PixelMap转ArrayBuffer,图片Uri转为PixelMap

GeorgeGcs
• 阅读 10

【HarmonyOS 5】ArrayBuffer转Base64,Base64转ArrayBuffer,Uri转ArrayBuff,PixelMap转ArrayBuffer,图片Uri转为PixelMap

##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财#

HarmonyOS NEXT

前言

ArrayBuff与Unint8Array是鸿蒙应用开发中,常用的二进制字节流处理对象,类比于安卓中的byte[]。

在鸿蒙系统的应用开发中,ArrayBuffer作为一种可转移对象,在线程间传递时不需要进行拷贝,从而避免了同一份数据在主线程和子线程中分别占用内存的问题。这种特性在处理大数据量时尤为重要,因为它能有效减少内存占用,提高应用性能

fd:资源描述符,以number形式存在,是鸿蒙系统中独有的,可以理解成文件在鸿蒙系统中的id序号。

uri:资源的路径,与path不同的是,路径字符串最前面带有file:头。例如 file://xxx.xxx.xx.png

pixelMap:类似于android中的bitmap,描述图片像素的信息对象。

工具函数:

最常用的转化存储函数

import { util } from "@kit.ArkTS";

  /**
   * ArrayBuffer转Base64
   * @param buffer
   * @returns
   */
  public arrayBuffer2Base64(buffer: ArrayBuffer){
    let temp = new Uint8Array(buffer);
    // 官方提供的base64编码转换工具
    let helper = new util.Base64Helper();
    let res = helper.encodeToStringSync(temp);
    return res;
  }

  /**
   * Base64转ArrayBuffer
   * @param base64Str
   * @returns 
   */
  public base642Buffer(str: string){
    let helper = new util.Base64Helper();
    let temp: Uint8Array = helper.decodeSync(str);
    let res: ArrayBuffer = temp.buffer as ArrayBuffer;
    return res;
  }

  /**
   * 图片Uri转ArrayBuff
   * @param uri
   * @returns 
   */
  public ImageUri2Buffer(uri: string){
    let file = fs.openSync(uri, fs.OpenMode.READ_ONLY);
    let buffer = new ArrayBuffer(4096);
    fs.readSync(file.fd, buffer);
    return buffer ;
  }

  /**
   * PixelMap转化为ArrayBuffer
   * @param pm
   * @returns
   */
  public pixelMapToArrayBuff(pm: image.PixelMap){
    // 创建ArrayBuffer对象
    let buffer = new ArrayBuffer(pm.getPixelBytesNumber());
    // 读取像素数据到ArrayBuffer
    pm.readPixelsToBufferSync(buffer);
    return buffer;
  }

  /**
   * 图片Uri转为PixelMap
   * @param uri
   * @returns
   */
  public ImageUriToPixelMap(uri: string): image.PixelMap {
    let file = fs.openSync(uri, fs.OpenMode.READ_ONLY);
    let imageSource: image.ImageSource = image.createImageSource(file.fd);
    let res: image.PixelMap = imageSource.createPixelMapSync({
      editable: true, // 是否可编辑。当取值为false时,图片不可二次编辑,如writepixels操作将失败。
      desiredPixelFormat: image.PixelMapFormat.RGBA_8888 // 解码的像素格式。仅支持设置:RGBA_8888、BGRA_8888和RGB_565。有透明通道图片格式不支持设置RGB_565,如PNG、GIF、ICO和WEBP。
    });
    return res;
  }
点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
svg转png
svg转png网络上常用的方式有两种:1.直接转base64放到图片src进行显示,测试效果不佳,始终报方法问题。2.先转canvas,再转为png图,测试效果可以但svg透明背景到了canvas转换会变黑。推荐使用方法三:复制链接下载svg转png的jshttp://p8sv0x8g6.bkt.clouddn.com/saveSvgAs
Wesley13 Wesley13
3年前
Java基于animated
  工作中,gif动图转图片/图片集转gif  pom依赖很简单<!gif<dependency<groupIdcom.madgag</groupId<artifactIdanimatedgiflib</artifactI
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
Html5 FileReader 对文件进行Base64编码
以Base64进行编码的数据Url开始越来越广泛的被应用起来,原来做Base64转换要自己写一个小程序来转,其实Html5的FileReader的readAsDataURL方法读取出的数据就已经是Base64数据格式的Url了,利用FileReader实现一个对本地文件进行读取并且转换为Base64Url的页面也非常简单。页面地址:http://z
Wesley13 Wesley13
3年前
unity将 -u4E00 这种 编码 转汉字 方法
 unity中直接使用 JsonMapper.ToJson(对象),取到的字符串,里面汉字可能是\\u4E00类似这种其实也不用转,服务器会通过类似fastjson发序列化的方式,将json转对象,获取对象的值就是中文但是有时服务器要求将传参中字符串中类似\\u4E00这种转汉字,就需要下面 publ
GeorgeGcs GeorgeGcs
2小时前
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言在HarmonyOS5的应用开发模型中,featureAbility是旧版FA模型(FeatureAbility)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文
GeorgeGcs GeorgeGcs
11小时前
【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解
【HarmonyOS5入门系列】鸿蒙HarmonyOS示例项目讲解\鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言:移动开发声明式UI框架的技术变革在移动操作系统的发展历程中,UI开发模式经历了从命令式到声明式的重大变革。根据
GeorgeGcs GeorgeGcs
11小时前
【HarmonyOS 5】AttributeModifier和AttributeUpdater区别详解
【HarmonyOS5】AttributeModifier和AttributeUpdater区别详解\鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、AttributeModifier和AttributeUpdater的定义和作用1
GeorgeGcs GeorgeGcs
4小时前
从“备胎”到领航者,鸿蒙操作系统的传奇进化
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财【HarmonyOS5】2019年,在全球科技产业的风云变幻中,华为正式推出了鸿蒙操作系统(HarmonyOS),这一消息如同一颗重磅炸弹,瞬间吸引了全世界的目光。彼时,外界对鸿蒙的诞生背
GeorgeGcs GeorgeGcs
2小时前
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
鸿蒙开发能力HarmonyOSSDK应用服务鸿蒙金融类应用(金融理财一、前言在HarmonyOS5的应用开发模型中,featureAbility是旧版FA模型(FeatureAbility)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文
GeorgeGcs
GeorgeGcs
Lv1
男 · 金融头部企业 · 鸿蒙应用架构师
HarmonyOS认证创作先锋,华为HDE专家,鸿蒙讲师,作者。目前任职鸿蒙应用架构师。 历经腾讯,宝马,研究所,金融。 待过私企,外企,央企。 深耕大应用开发领域十年。 AAE,Harmony(OpenHarmony\HarmonyOS),MAE(Android\IOS),FE(H5\Vue\RN)。
文章
56
粉丝
1
获赞
2