• Lv0
    粉丝1

积分316 / 贡献0

提问41答案被采纳12文章1

通过screenshot.save的截图要怎么放到相册里呢

云端筑梦 显示全部楼层 发表于 2024-1-15 10:44:42
let screenshotOptions: screenshot.ScreenshotOptions = {
                    "rotation": 0,
                  };
                  screenshot.save(screenshotOptions, (err: BusinessError, pixelMap) => {
                    if (err) {
                      console.log('Failed to save screenshot. Code: ' + JSON.stringify(err));
                      return;
                    }
                    console.log('Succeeded in saving sreenshot. Pixel bytes number: ' + pixelMap.getPixelBytesNumber());
                    pixelMap.release(); // PixelMap使用完后及时释放内存

我看文档屏幕截图的api里面的screenshot.save可以获取截图的pixeMap但是要怎么样转换为图片并保存到相册中查看

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论6

深开鸿_王石

沙发 发表于 2024-1-15 14:24:38
相册资源部分参考photoaccesshelper,http://docs.openharmony.cn/pages ... urce-guidelines.md/,这里有存取的方法

xq_qyh

发表于 2024-1-15 16:01  IP属地: - 中国广东省广州市 中国电信IDC

回复 深开鸿_王石: 需要创建用户相册吗,没看到有往系统相册保存的方法

深开鸿_王石

发表于 2024-1-16 09:26  IP属地: 江苏省

回复 xq_qyh: 是,这是给三方应用的,系统应用的,要使用http://docs.openharmony.cn/pages ... getpublicdirectory8,但是这个已经开始废弃了,代码就可以参考applications/standard/screenshot/features/screenshot/src/main/ets/com/ohos/model/screenShotModel.ets,这是系统原生的截屏方式

xq_qyh

发表于 2024-1-16 16:18  IP属地: - 中国广东省广州市 中国电信IDC

回复 深开鸿_王石: 我看了系统原生的截屏方式用的还是mediaLibrary

【3 条回复】

mean

板凳 发表于 2024-1-16 09:26:05

通过screenshot.save的截图要怎么放到相册里呢

看到其他人的实现方式

export async function encode(pixelMap: PixelMap) {
  // Packing image.
  const imagePackerApi = image.createImagePacker();
  const packOptions: image.PackingOption = {
    format: 'image/jpeg',
    quality: 100
  }
  const imageData = await imagePackerApi.packing(pixelMap, packOptions);
  console.info(`imageData's length is ${imageData.byteLength}`)
  // Get album's path.
  const context = getContext(this);
  const media = mediaLibrary.getMediaLibrary(context);
  const publicPath = await media.getPublicDirectory(mediaLibrary.DirectoryType.DIR_IMAGE);
  const currentTime = new Date().getTime();
  // Create image asset.
  const imageAssetInfo = await media.createAsset(
    mediaLibrary.MediaType.IMAGE,
    `image_${currentTime}.jpg`,
    publicPath
  );
  const imageFd = await imageAssetInfo.open('rw');
  await fs.write(imageFd, imageData);
  // Image resource release.
  await imageAssetInfo.close(imageFd);
  imagePackerApi.release();
  await media.release();
}

xq_qyh

发表于 2024-1-16 09:41  IP属地: - 中国广东省广州市 中国电信IDC

回复 mean: 好的,谢谢大佬我试一下

【1 条回复】
共6 条回复,点击查看

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部