可参考以下demo://保存至相册 async WritePhoto() { let context = getContext(this); let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; let extension:string = 'png'; let options: photoAccessHelper.CreateOptions = { title: 'testPhoto' } let uri = await phAccessHelper.createAsset(photoType, extension, options); // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制 let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); try { const imageBuffer = await this.packingPixelMap2Jpg(this.selectedImgPixelMap as image.PixelMap) // 写到媒体库文件中 await fs.write(file.fd, imageBuffer); await fs.close(file.fd); promptAction.showToast({ message: '保存至相册成功', duration: 2500 }); } catch (err) { console.error("error is "+ JSON.stringify(err)) } } // 打包 PixelMap 为 jpg 格式 async packingPixelMap2Jpg(pixelMap: PixelMap): Promise<ArrayBuffer> { // 创建ImagePacker实例 const imagePackerApi = image.createImagePacker(); // 设置打包参数 // format:图片打包格式,只支持 jpg 和 webp // quality:JPEG 编码输出图片质量 // bufferSize:图片大小,默认 10M const packOpts: image.PackingOption = { format: "image/jpeg", quality: 100 }; let imageBuffer: ArrayBuffer = new ArrayBuffer(1); try { // 图片压缩或重新打包 imageBuffer = await imagePackerApi.packing(pixelMap, packOpts); } catch (err) { console.error(Invoke packingPixelMap2Jpg failed, err: ${JSON.stringify(err)}); } return imageBuffer; }
可参考以下demo: