HarmonyOS鸿蒙Next中怎样将压缩之后的图片ArrayBuffer转换成uri并替换已有的uri

HarmonyOS鸿蒙Next中怎样将压缩之后的图片ArrayBuffer转换成uri并替换已有的uri

let pickerProfile: picker.PickerProfile = {
  cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
  saveUri: uri
}
let pickerResult: picker.PickerResult = await picker.pick(context, [picker.PickerMediaType.PHOTO], pickerProfile)
let base64 = ''
if (!pickerResult || pickerResult.resultCode !== 0) {
  return base64
}
// 读取照片内容
let result = fileUtil.getArrayBufferFromFilePath(filePath) as ArrayBuffer
let arrayBuffer = result as ArrayBuffer
let imageSource: image.ImageSource = image.createImageSource(arrayBuffer);
let imagePixelMap: ImagePixelMap = imageUtil.getImageSource2PixelMap(imageSource)

const imagePackerApi: image.ImagePacker = image.createImagePacker();
let packOpts: image.PackingOption = { format: MimeType.jpg, quality: CameraUtil.quality };
const bufRes: ArrayBuffer = await imagePackerApi.packToData(imagePixelMap.pixelMap, packOpts)

更多关于HarmonyOS鸿蒙Next中怎样将压缩之后的图片ArrayBuffer转换成uri并替换已有的uri的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

您好,关于您咨询的问题,您可参考保存用户文件,在从网络下载文件到本地或将已有用户文件另存为新的文件路径等场景下,使用FilePicker提供的保存用户文件的能力。

更多关于HarmonyOS鸿蒙Next中怎样将压缩之后的图片ArrayBuffer转换成uri并替换已有的uri的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


fileUri.getUriFromPath() ,这个方法能把沙箱路径转成uri

找到个方案,可以用writeSync(),将dataBuffer写到指定的地方

在HarmonyOS鸿蒙Next中,将压缩后的图片ArrayBuffer转换为uri并替换已有uri,可以通过以下步骤实现:

  1. 将ArrayBuffer转换为Blob:

    const blob = new Blob([arrayBuffer], { type: 'image/jpeg' });
    
  2. 生成临时URL:

    const url = URL.createObjectURL(blob);
    
  3. 替换已有URI:

    existingUri = url;
    

确保在替换后,释放旧的URL对象以避免内存泄漏:

URL.revokeObjectURL(oldUri);
回到顶部