HarmonyOS 鸿蒙Next 预览打开相册中的一张图片,预览失败

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 预览打开相册中的一张图片,预览失败

从相册选择一张图片后,选择预览打开,预览失败 
 

2 回复

参考如下代码:

import { filePreview } from '@kit.PreviewKit';

import { promptAction } from '@kit.ArkUI';

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

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

import fileUri from '@ohos.file.fileuri';

let fileName: string = 'tt.jpg';

let context = getContext(this);

let fileDir = context.filesDir; // 获取沙箱路径

let uri = ''; // 获取uri

let pathDir = getContext().filesDir;

@Entry

@Component

struct Index {

  @State message: string = 'Hello World';

  build() {

    Row() {

      Column() {

        Button('1、相册图片写入沙箱')

          .onClick(() => {

            this.picture()

          })

        Button('2、预览')

          .onClick(async () => {

            let result = await filePreview.canPreview(context, uri); // 传入uri,判断是否可预览

            console.log('result:' + result)

            if (result) {

              let previewInfo: filePreview.PreviewInfo = {

                title: fileName,

                uri: uri,

                mimeType: 'image/jpeg'

              }

              filePreview.openPreview(getContext(this), previewInfo)

                .then(() => {

                  console.log('预览成功')

                }); // 打开预览

            } else {

              promptAction.showToast({

                // 不可预览

                message: '文件不可预览'

              });

            }

          })

      }

      .width('100%')

    }

    .height('100%')

  }

  async picture() {

    let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();

    PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;

    PhotoSelectOptions.maxSelectNumber = 1;

    let photoPicker = new photoAccessHelper.PhotoViewPicker();

    photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {

      let photouri: Array<string> = PhotoSelectResult.photoUris

      console.log('photouri[0]:' + photouri[0])

      let file = fs.openSync(photouri[0], fs.OpenMode.READ_ONLY)

      // 图片保存到沙箱

      uri = fileUri.getUriFromPath(pathDir + '/picture2.jpg')

      console.log('uri:'+uri)

      let file2 = fs.openSync(pathDir + '/picture2.jpg', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)

      fs.copyFileSync(file.fd, file2.fd)

      fs.closeSync(file);

      fs.closeSync(file2);

    })

  }

}

更多关于HarmonyOS 鸿蒙Next 预览打开相册中的一张图片,预览失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next环境中,若预览相册中的图片失败,可能的原因及解决方案如下:

  1. 权限问题

    • 确保应用已获取读取存储空间的权限。在config.json中配置相关权限,并在代码中动态申请权限。
  2. 图片路径问题

    • 验证图片路径是否正确。使用绝对路径而非相对路径,确保路径指向的图片文件存在。
  3. 图片格式支持

    • 确认图片格式被系统支持。常见的如JPEG、PNG等,对于不支持的格式,需进行转换。
  4. 内存或资源限制

    • 检查设备内存是否充足,以及应用是否因资源限制而无法加载大图片。尝试缩小图片尺寸或优化图片加载逻辑。
  5. 系统或应用Bug

    • 确认是否为系统或应用的已知Bug。查阅官方文档或社区,看是否有其他开发者遇到类似问题。
  6. 日志分析

    • 查看系统日志和应用日志,分析错误堆栈,定位问题原因。

如果上述方法均无法解决问题,请确保应用已更新至最新版本,并尝试在不同设备上复现问题。若问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部