纯血鸿蒙Next如何下载图片到本地相册

在纯血鸿蒙Next系统中,如何将网页或应用中的图片保存到本地相册?我尝试长按图片但没有出现保存选项,是否需要通过开发者模式或特殊权限设置?求详细的操作步骤和注意事项。

2 回复

哈哈,程序员小哥,纯血鸿蒙Next下载图片到本地相册?简单!用 @ohos.file.fs@ohos.multimedia.mediaLibrary 这两个模块,先保存到应用沙箱,再调用媒体库接口写入相册。记得申请存储权限哦,不然系统会对你“微笑拒绝”。代码一写,图片秒存!

更多关于纯血鸿蒙Next如何下载图片到本地相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在纯血鸿蒙Next(HarmonyOS NEXT)中,可以通过以下步骤下载图片到本地相册:

1. 申请存储权限

module.json5 文件中添加存储权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.WRITE_IMAGE"
      }
    ]
  }
}

2. 使用 PhotoAccessHelper 保存图片

通过 PhotoAccessHelper 将图片保存到相册:

import photoAccessHelper from '[@ohos](/user/ohos).file.photoAccessHelper';
import fs from '[@ohos](/user/ohos).file.fs';

async function saveImageToGallery(imageData: ArrayBuffer) {
  try {
    // 获取 PhotoAccessHelper 实例
    const phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);

    // 创建相册文件(例如:test.jpg)
    const options: photoAccessHelper.PhotoCreateOptions = {
      title: 'test.jpg'
    };
    const fileUri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg', options);

    // 将 ArrayBuffer 写入文件
    const file = await fs.open(fileUri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    await fs.write(file.fd, imageData);
    await fs.close(file.fd);

    console.log('图片保存成功,URI: ' + fileUri);
  } catch (error) {
    console.error('保存图片失败: ' + error);
  }
}

3. 从网络下载图片

使用 http 模块下载图片,并调用上述保存方法:

import http from '[@ohos](/user/ohos).net.http';

async function downloadImage(imageUrl: string) {
  try {
    const httpRequest = http.createHttp();
    const response = await httpRequest.request(imageUrl, { method: http.RequestMethod.GET });

    if (response.responseCode === 200) {
      // 将下载的 ArrayBuffer 保存到相册
      await saveImageToGallery(response.result as ArrayBuffer);
    } else {
      console.error('下载失败,状态码: ' + response.responseCode);
    }
  } catch (error) {
    console.error('下载图片失败: ' + error);
  }
}

使用示例:

// 调用下载函数,传入图片URL
downloadImage('https://example.com/image.jpg');

注意事项:

  • 确保应用已获取存储权限(用户需授权)。
  • 网络权限需在 module.json5 中配置:"ohos.permission.INTERNET"
  • 图片数据需为 ArrayBuffer 格式,网络下载时可通过 response.result 获取。

通过以上步骤,即可实现将网络图片下载并保存到本地相册。

回到顶部