缩略图,如何获取文件的缩略图

获取文件的缩略图

HarmonyOS
2024-05-28 20:19:48
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
spitter

使用的核心API

import photoAccessHelper from '@ohos.file.photoAccessHelper';

核心代码解释

@Entry 
@Component 
struct Index { 
  @State message: string = 'Hello World'; 
  private context = getContext() as common.UIAbilityContext; 
  
  @State pixelMap: image.PixelMap | undefined = undefined; 
  
  aboutToAppear() { 
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); 
    try { 
      let context = getContext(this); 
      atManager.requestPermissionsFromUser(context, ['ohos.permission.READ_IMAGEVIDEO'], (err: BusinessError, data: PermissionRequestResult)=>{ 
        console.info('data:' + JSON.stringify(data)); 
        console.info('data permissions:' + data.permissions); 
        console.info('data authResults:' + data.authResults); 
      }); 
    } catch(err) { 
      console.log(`catch err->${JSON.stringify(err)}`); 
    } 
  } 
  
  build() { 
    Row() { 
      Column() { 
        Button('视频录制') 
          .onClick(() => { 
            this.videoCapture(); 
          }) 
        Image(this.pixelMap) 
          .height('50%') 
      } 
      .width('100%') 
  
    } 
    .height('100%') 
  } 
  
  videoCapture() { 
    const want: Want = { 
      action: 'ohos.want.action.videoCapture', 
      parameters: { 
        callBundleName: 'com.example.msi_harmony' 
      } 
    }; 
  
    this.context.startAbilityForResult(want, async (err, data) => { 
      const uri = data.want?.parameters?.['resourceUri']?.toString(); 
      if (!uri) { 
        console.log("uri is empty"); 
        return; 
      } 
      const phInstance = photoAccessHelper.getPhotoAccessHelper(getContext()); 
      let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 
      predicates.equalTo(photoAccessHelper.PhotoKeys.URI, uri); 
      const fetchOpts: photoAccessHelper.FetchOptions = { 
        fetchColumns: [], 
        predicates: predicates 
      } 
      const fetchResult  = await phInstance.getAssets(fetchOpts) 
      const assets = await fetchResult.getAllObjects(); 
      const asset = assets[0]; 
      try { 
        this.pixelMap = await asset.getThumbnail(); 
        console.log("getThumbnail success") 
        // 其他操作 
      } catch (e) { 
        console.error("getThumbnail error is " + JSON.stringify(e)); 
      } 
  
    }) 
  } 
}

注明适配的版本信息

本示例为Stage模型,支持API version 10。

本示例需要使用DevEco Studio 4.0 Release版本进行编译运行。

分享
微博
QQ
微信
回复
2024-05-29 21:18:43
相关问题
鸿蒙能获取图片指定大小缩略图
8059浏览 • 1回复 待解决
如何获取profile内文件
384浏览 • 1回复 待解决
如何获取HSP资源文件
655浏览 • 1回复 待解决
如何获取应用自身文件路径
630浏览 • 1回复 待解决
如何获取工程目录下json文件
251浏览 • 1回复 待解决
如何获取资源文件全路径
520浏览 • 1回复 待解决
鸿蒙如何获取资源文件路径
14378浏览 • 3回复 待解决
Native侧如何获取可操作文件目录
651浏览 • 1回复 待解决
如何获取文件绝对路径
527浏览 • 1回复 待解决
如何获取profile路径下资源文件
403浏览 • 1回复 待解决
有谁知道如何获取文件夹大小
338浏览 • 1回复 待解决
如何监听文件文件目录变化
521浏览 • 1回复 待解决
ArkUI中如何获取mp4文件第一帧图片?
3780浏览 • 1回复 待解决