如何将PixelMap转图片base64字符串?

如何将PixelMap转图片base64字符串?

HarmonyOS
2024-08-06 14:58:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
coolhead2000
import { util } from '@kit.ArkTS';
import { image } from '@kit.ImageKit';
import { BusinessError } from '@kit.BasicServicesKit';
/**
 * PixelMap转图片base64字符串
 * @param pixelMap
 * @param format 目标格式,默认png,当前只支持jpg、webp和png。当传入的格式与文件格式不匹配,可能会导致生成错误的Base64字符串。
 * @returns
 */
 async pixelMapToBase64Str(pixelMap: image.PixelMap, format: string = 'image/png'): Promise<string> {
  try {
    let packOpts: image.PackingOption = { format: format, quality: 100 }
    const arrayBuffer = await this.packingFromPixelMap(pixelMap, packOpts);
    let base64 = new util.Base64Helper();
    let base64Str: string = base64.encodeToStringSync(new Uint8Array(arrayBuffer));
    let headStr = `data:${format};base64,`;
    if (!base64Str.startsWith(headStr)) {
      base64Str = headStr + base64Str
    }
    return base64Str;
  } catch (err) {
    let error = err as BusinessError;
    // LogUtil.error(`ImageUtil-pixelMapToBase64Str-异常 ~ code: ${error.code} -·- message: ${error.message}`);
    return '';
  }
}
/**
 * 图片压缩或重新打包,使用Promise形式返回结果。
 * @param source PixelMap-打包的PixelMap资源。
 * @param options 设置打包参数:
 *   format 目标格式。当前只支持jpg(image/jpeg)、webp 和 png(image/png)。
 *   quality JPEG编码中设定输出图片质量的参数,取值范围为0-100。
 *   bufferSize 接收编码数据的缓冲区大小,单位为Byte。默认为10MB。bufferSize需大于编码后图片大小。
 * @returns
 */
 packingFromPixelMap(source: image.PixelMap, options: image.PackingOption): Promise<ArrayBuffer> {
  const imagePacker: image.ImagePacker = image.createImagePacker();
  return imagePacker.packing(source, options).finally(() => {
    imagePacker.release(); //释放
  });
}
分享
微博
QQ
微信
回复
2024-08-06 20:43:51
相关问题
如何将图片base64字符PixelMap
636浏览 • 1回复 待解决
HarmonyOS 图片转为base64字符
208浏览 • 1回复 待解决
base64字符保存为图片的方法
908浏览 • 1回复 待解决
PixelMap类型怎么转换成Base64字符
661浏览 • 1回复 待解决
base64字符如何转为图片并保存
2709浏览 • 1回复 待解决
HarmonyOS如何将图片Base64
934浏览 • 1回复 待解决
HarmonyOS SM2加签返回Base64字符
70浏览 • 1回复 待解决
怎么把PixelMap图片BASE64
9457浏览 • 1回复 待解决
如何将JSON字符串Class对象
489浏览 • 1回复 待解决
HarmonyOS 图片base64
93浏览 • 1回复 待解决
PixelMap怎么Base64?(非Java)
3393浏览 • 2回复 待解决