HarmonyOS Image加载本地图片咨询

把jpg下载到context.filesDir之后, 想要加载到image组件中显示,官网给的示例不够完善。

1,是否可以直接给path给到image。

2,PixelMap是否可以直接给到image进行加载。

HarmonyOS
2024-08-03 13:24:51
1068浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
morning_dxm

完成的图片展示demo如下:

import fs from '@ohos.file.fs'; 
import { resourceManager } from '@kit.LocalizationKit'; 
import { image } from '@kit.ImageKit'; 
import { fileUri } from '@kit.CoreFileKit'; 
@Entry 
@Component 
struct FunAPage { 
  @State message: string = 'Hello funA'; 
  @State filePath:string = '' 
  @State imageUri:string = '' 
  @State pixelMap:image.PixelMap  | undefined = undefined 
  aboutToAppear(): void { 
    this.setImageUriToFile() 
  } 
  setImageUriToFile(){ 
    let context = getContext(this); 
    let filePath = context.filesDir + '/test.png'; 
    //文件的字节数据,该处可替换为其他各种来源的字节数据 
    let arrayBuff = context.resourceManager.getRawFileContentSync('food.png').buffer 
    let file = fs.openSync(filePath,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) 
    fs.writeSync(file.fd,arrayBuff) 
    fs.closeSync(file.fd) 
    this.filePath = filePath 
  } 
  getImageUri(){ 
    this.imageUri = fileUri.getUriFromPath(this.filePath) 
  } 
  async getPixelMapByImage():Promise<image.PixelMap>{ 
    const context : Context = getContext(this); 
    // 获取resourceManager资源管理器 
    const resourceMgr : resourceManager.ResourceManager = context.resourceManager; 
    let rawFileDescriptor = await resourceMgr.getRawFd('food.png') 
    const imageSource : image.ImageSource = image.createImageSource(rawFileDescriptor); 
    let decodingOptions : image.DecodingOptions = { 
      editable: true, 
      desiredPixelFormat: 3, 
    } 
    // 创建pixelMap并进行简单的旋转和缩放 
    const pixelMap:image.PixelMap = await imageSource.createPixelMap(decodingOptions) 
    this.pixelMap =  pixelMap 
    return pixelMap; 
  } 
  build() { 
    Row() { 
      Column() { 
        Button('uri图片展示') 
          .onClick(()=>{ 
            this.getImageUri() 
          }) 
        Image(this.imageUri) 
          .width(200) 
          .height(200) 
        Button('pixelMap图片展示') 
          .onClick(()=>{ 
            this.getPixelMapByImage() 
          }) 
        Image(this.pixelMap) 
          .width(200) 
          .height(200) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
分享
微博
QQ
微信
回复
2024-08-04 13:43:05


相关问题
HarmonyOS Image展示本地图片失败
1137浏览 • 1回复 待解决
HarmonyOS 如何压缩本地图片
818浏览 • 1回复 待解决
HarmonyOS Image加载图片
660浏览 • 1回复 待解决
HarmonyOS 如何上传本地图片
809浏览 • 1回复 待解决
HarmonyOS customScan 如何扫描本地图片
678浏览 • 1回复 待解决
如何获取手机本地图片
1038浏览 • 1回复 待解决
HarmonyOS如何获取手机本地图片
1327浏览 • 1回复 待解决
HarmonyOS 卡片使用本地图片作为背景
584浏览 • 1回复 待解决
HarmonyOS Image图片无法加载
959浏览 • 1回复 待解决
HarmonyOS Image加载图片不出现
919浏览 • 1回复 待解决
HarmonyOS Image加载网络图片
753浏览 • 1回复 待解决
HarmonyOS Image组件加载图片报错
874浏览 • 1回复 待解决