pixelMap格式图如何进行页面流转


HarmonyOS
2025-03-26 17:01:40
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
马晓晓笑

我仔细看了下你的问题,下面是我的回答:

​PixelMap​对象无法直接通过页面参数传递,需转换为可序列化格式(如Base64字符串或文件URI)。

import image from '@ohos.multimedia.image';


// 获取PixelMap对象(示例)

let pixelMap: image.PixelMap = ...; // 从相机/图库获取的PixelMap


// 转换为ArrayBuffer

const imageSource = image.createImageSource(pixelMap);

const packOptions: image.PackingOption = {

  format: "image/jpeg",  // 指定输出格式

  quality: 90            // 压缩质量(1-100)

};

imageSource.getImageData(packOptions, (err, data) => {

  if (!err) {

    const arrayBuffer = data.data;

    // 转为Base64字符串

    const base64Data = arrayBufferToBase64(arrayBuffer);

    navigateToNextPage(base64Data);

  }

});


// ArrayBuffer转Base64工具函数

function arrayBufferToBase64(buffer: ArrayBuffer): string {

  let binary = '';

  const bytes = new Uint8Array(buffer);

  for (let i = 0; i < bytes.byteLength; i++) {

    binary += String.fromCharCode(bytes[i]);

  }

  return btoa(binary);

}
  1. 将Base64转回PixelMap
import image from '@ohos.multimedia.image';


// Base64转ArrayBuffer

function base64ToArrayBuffer(base64: string): ArrayBuffer {

  const binaryString = atob(base64);

  const len = binaryString.length;

  const bytes = new Uint8Array(len);

  for (let i = 0; i < len; i++) {

    bytes[i] = binaryString.charCodeAt(i);

  }

  return bytes.buffer;

}


// 创建PixelMap

const arrayBuffer = base64ToArrayBuffer(receivedBase64);

const imageSource = image.createImageSource(arrayBuffer);

imageSource.createPixelMap().then((pixelMap) => {

  this.targetPixelMap = pixelMap; // 用于页面渲染

});


分享
微博
QQ
微信
回复
2025-03-26 19:48:16
相关问题
HarmonyOS image的pixelmap如何进行深拷贝
1081浏览 • 1回复 待解决
页面横竖屏如何进行切换
1480浏览 • 1回复 待解决
如何进行页面横竖屏切换
3171浏览 • 1回复 待解决
前端页面和原生页面如何进行通信?
1660浏览 • 1回复 待解决
ArkTS如何进行页面间传值?
2988浏览 • 1回复 待解决
如何进行主入口页面设置?
474浏览 • 0回复 待解决
原生页面和webview如何进行参数传递
1476浏览 • 1回复 待解决
HarmonyOS如何进行跨module的页面跳转
1508浏览 • 1回复 待解决
HarmonyOS 页面如何进行一多适配
968浏览 • 1回复 待解决
在ArkTS中如何进行页面之间的传值?
955浏览 • 0回复 待解决
HarmonyOS PixelMap支持gif动
1314浏览 • 1回复 待解决
HarmonyOS 请问如何进行UrlEncode
993浏览 • 1回复 待解决
HarmonyOS 如何进行音频合成
1419浏览 • 1回复 待解决
HarmonyOS 如何进行图片裁剪
1677浏览 • 1回复 待解决
HarmonyOS 如何进行代码检查
1146浏览 • 1回复 待解决
HarmonyOS 如何进行邀请测试
1207浏览 • 1回复 待解决
HarmonyOS 如何进行sdk升级
1007浏览 • 1回复 待解决
如何进行系统崩溃监控?
1717浏览 • 1回复 待解决
HarmonyOS 如何进行堆栈反解
762浏览 • 1回复 待解决