HarmonyOS Image加载本地图片咨询

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

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

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

HarmonyOS
2024-08-03 13:24:51
浏览
收藏 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%') 
  } 
}
分享
微博
QQ
微信
回复
2024-08-04 13:43:05
相关问题
HarmonyOS如何获取手机本地图片
480浏览 • 1回复 待解决
如何获取手机本地图片
315浏览 • 1回复 待解决
HarmonyOS image组件图片加载性能数据
174浏览 • 1回复 待解决
HarmonyOS Image 加载网络图片问题
473浏览 • 1回复 待解决
HarmonyOS加载Image组件的图片
361浏览 • 1回复 待解决
服务卡片设置本地图片显示空白
7262浏览 • 2回复 已解决
ArkUI(eTS)如何实现本地图片保存?
6970浏览 • 1回复 待解决
如何保存本地图片到相册中
904浏览 • 1回复 待解决
识别本地图片的方法有哪些?
298浏览 • 1回复 待解决
Image组件如何加载网络图片
2414浏览 • 1回复 待解决
HarmonyOS image resizable问题咨询
285浏览 • 1回复 待解决
Image组件如何加载沙盒内的图片
2347浏览 • 1回复 待解决
Image图片加载缓慢,有什么方案么?
917浏览 • 1回复 待解决
如何使用Image加载沙箱路径图片资源
958浏览 • 2回复 待解决