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


HarmonyOS
6天前
浏览
收藏 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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  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; // 用于页面渲染

});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.


分享
微博
QQ
微信
回复
5天前
相关问题
HarmonyOS image的pixelmap如何进行深拷贝
535浏览 • 1回复 待解决
页面横竖屏如何进行切换
1113浏览 • 1回复 待解决
如何进行页面横竖屏切换
2661浏览 • 1回复 待解决
如何进行主入口页面设置?
70浏览 • 0回复 待解决
前端页面和原生页面如何进行通信?
1187浏览 • 1回复 待解决
ArkTS如何进行页面间传值?
2167浏览 • 1回复 待解决
原生页面和webview如何进行参数传递
1065浏览 • 1回复 待解决
HarmonyOS如何进行跨module的页面跳转
1090浏览 • 1回复 待解决
HarmonyOS 页面如何进行一多适配
533浏览 • 1回复 待解决
在ArkTS中如何进行页面之间的传值?
567浏览 • 0回复 待解决
HarmonyOS PixelMap支持gif动
765浏览 • 1回复 待解决
HarmonyOS 如何进行代码检查
699浏览 • 1回复 待解决
如何进行系统崩溃监控?
1234浏览 • 1回复 待解决
HarmonyOS 如何进行邀请测试
697浏览 • 1回复 待解决
HarmonyOS 如何进行sdk升级
598浏览 • 1回复 待解决
HarmonyOS 如何进行音频合成
978浏览 • 1回复 待解决
HarmonyOS 请问如何进行UrlEncode
604浏览 • 1回复 待解决
HarmonyOS 如何进行图片裁剪
658浏览 • 1回复 待解决
多个Cookie如何进行批量设置
2763浏览 • 1回复 待解决