HarmonyOS 图片保存失败

async packToFile(pixelMap: PixelMap): Promise<string> {

  // 获取应用文件路径
  let context = getContext(this) as common.UIAbilityContext;
  let filesDir: string = context.filesDir;
  let picName = '/testimage' + new Date().getTime() + '.jpeg'
  // 新建并打开文件
  let fPath = fs.openSync(filesDir + picName, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  // 创建图像编码ImagePacker对象
  const imagePackerApi = image.createImagePacker();
  // 设置编码输出流和编码参数。format为图像的编码格式;quality为图像质量,范围从0-100,100为最佳质量
  const options: image.PackingOption = {  format: "image/jpeg", quality: 100};
  await imagePackerApi.packToFile(pixelMap, fPath.fd, options);
  fs.closeSync(fPath);
  return fPath.path;
}

使用上面一段代码 将PixelMap图片保存到沙箱文件里面,直接报错13900020无效的参数,请问这个问题大概出现在哪里?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

关于如何将PixelMap保存到相册,请参考:

import { resourceManager } from '@kit.LocalizationKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { image } from '@kit.ImageKit';
import { promptAction } from '@kit.ArkUI';
import { fileIo } from '@kit.CoreFileKit';
import { common } from '@kit.AbilityKit';
import fs from '@ohos.file.fs';

@Entry
@Component
struct SavePixelMapToAlbum {
  @State saveButtonOptions: SaveButtonOptions = {
    icon: SaveIconStyle.FULL_FILLED,
    text: SaveDescription.SAVE,
    buttonType: ButtonType.Capsule
  };
  @State pixel: image.PixelMap | undefined = undefined;
  @State albumPath: string = '';
  @State photoSize: number = 0;
  private context: Context = getContext(this);

  async aboutToAppear() {
    const resourceMgr: resourceManager.ResourceManager = this.context.resourceManager;
    const fileData: Uint8Array = await resourceMgr.getRawFileContent('IMG_1715392880_000.jpg');
    let buffer = new Uint8Array(fileData).buffer as object as ArrayBuffer;
    let imageResource = image.createImageSource(buffer);
    let opts: image.DecodingOptions = { editable: true };
    this.pixel = await imageResource.createPixelMap(opts);
  }

  async packToFile(pixelMap?: PixelMap): Promise<string> {
    // 获取应用文件路径
    let context = getContext(this) as common.UIAbilityContext;
    let filesDir: string = context.cacheDir;
    let picName = '/testimage' + new Date().getTime() + '.jpg'
    // 新建并打开文件
    let file = fs.openSync(filesDir + picName, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
    // 创建图像编码ImagePacker对象
    const imagePackerApi = image.createImagePacker();
    // // 设置编码输出流和编码参数。format为图像的编码格式;quality为图像质量,范围从0-100,100为最佳质量
    const options: image.PackingOption = { format: "image/jpeg", quality: 98};
    await imagePackerApi.packToFile(pixelMap, file.fd, options)
    // fs.closeSync(fPath);
    console.log(file.path);
    return file.path;
  }

  build() {
    Row() {
      Column() {
        Image(this.pixel)
          .objectFit(ImageFit.None)
          .height('30%')
        Button().onClick(()=>{this.packToFile(this.pixel);
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS SaveButton保存图片授权失败
184浏览 • 1回复 待解决
HarmonyOS 图片保存
215浏览 • 1回复 待解决
HarmonyOS 图片保存功能
170浏览 • 1回复 待解决
HarmonyOS 组件生成图片保存
193浏览 • 1回复 待解决
HarmonyOS 图片保存到相册
16浏览 • 1回复 待解决
HarmonyOS图片保存相册问题
707浏览 • 1回复 待解决
HarmonyOS 保存图片文件异常
487浏览 • 1回复 待解决
HarmonyOS 图片上传失败
211浏览 • 1回复 待解决
HarmonyOS 图片压缩失败
150浏览 • 1回复 待解决
HarmonyOS 上传图片失败
336浏览 • 1回复 待解决
HarmonyOS 保存图片到系统相册
212浏览 • 1回复 待解决
HarmonyOS 保存图片到本地相册
192浏览 • 1回复 待解决
HarmonyOS 保存图片到相册问题
521浏览 • 1回复 待解决
HarmonyOS 实现保存图片到相册
275浏览 • 1回复 待解决
HarmonyOS 截图保存图片到相册
193浏览 • 1回复 待解决
HarmonyOS 图片保存到相册报错
292浏览 • 1回复 待解决
HarmonyOS 保存网络图片,图库更新
477浏览 • 1回复 待解决