HarmonyOS 如何读取本地文件流?

例如:file://media/Photo/24/IMG_1719560718_023/1719560618835.png

HarmonyOS
2024-12-27 16:52:23
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

可以参考如下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-12-27 19:07:31
相关问题
如何读取本地JSON文件
3605浏览 • 1回复 待解决
HarmonyOS 如何读取本地json文件
1445浏览 • 1回复 待解决
HarmonyOS ArkTS如何读取本地json文件
1438浏览 • 1回复 待解决
HarmonyOS fs读取本地文件
1392浏览 • 1回复 待解决
stageMode下如何读取本地json 文件
4534浏览 • 1回复 待解决
HarmonyOS 读取本地RawFile文件失败
1922浏览 • 1回复 待解决
鸿蒙next 中如何读取本地json文件
486浏览 • 0回复 待解决
Harmony 如何读取本地视频文件路径?
16236浏览 • 2回复 待解决
读取文件的方式,有人知道吗?
2775浏览 • 1回复 待解决
读取本地json 文件提示权限拒绝
4376浏览 • 1回复 待解决
怎么读取本地音频文件列表?
7864浏览 • 1回复 待解决
HarmonyOS 读取本地json文件转成字符串
1191浏览 • 1回复 待解决
ArkTS如何读取本地json?
8322浏览 • 1回复 待解决
HarmonyOS如何读取文件
1636浏览 • 1回复 待解决
HarmonyOS 如何读取项目文件
572浏览 • 1回复 待解决
HarmonyOS 文件问题
861浏览 • 1回复 待解决
如何读取本地/预制数据库?
2438浏览 • 1回复 待解决
HarmonyOS 文件读取
817浏览 • 1回复 待解决
HarmonyOS 如何查看本地文件
1274浏览 • 1回复 待解决
HarmonyOS libs下文件如何读取
934浏览 • 1回复 待解决
HarmonyOS文件转成
831浏览 • 1回复 待解决