OpenHarmony开发者论坛

标题: 通过screenshot.save的截图要怎么放到相册里呢 [打印本页]

作者: xq_qyh    时间: 2024-1-15 10:44
标题: 通过screenshot.save的截图要怎么放到相册里呢
[md]```
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但是要怎么样转换为图片并保存到相册中查看
```
[/md]
作者: 深开鸿_王石    时间: 2024-1-15 14:24
相册资源部分参考photoaccesshelper,http://docs.openharmony.cn/pages ... urce-guidelines.md/,这里有存取的方法
作者: xq_qyh    时间: 2024-1-15 16:01
回复 深开鸿_王石: 需要创建用户相册吗,没看到有往系统相册保存的方法
作者: mean    时间: 2024-1-16 09:26
标题: 通过screenshot.save的截图要怎么放到相册里呢
[md]看到其他人的实现方式

```
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();
}
```
[/md]
作者: 深开鸿_王石    时间: 2024-1-16 09:26
回复 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 09:41
回复 mean: 好的,谢谢大佬我试一下
作者: xq_qyh    时间: 2024-1-16 16:18
回复 深开鸿_王石: 我看了系统原生的截屏方式用的还是mediaLibrary




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5