HarmonyOS鸿蒙Next中如何将一张网络图片保存到相册

HarmonyOS鸿蒙Next中如何将一张网络图片保存到相册 一张网络图片,想保存到相册,要如何操作?

3 回复

可以参考这个demo

import { http } from '@kit.NetworkKit'
import { BusinessError } from '@kit.BasicServicesKit';
import { ResponseCode } from '@ohos.net.http';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import fs from '@ohos.file.fs';

@Entry
@Component
struct Index {
  loadImageWithUrl(url: string) {
    // 使用request下载图片并在回调函数中保存图片到相册
    http.createHttp().request(url,
      {
        method:http.RequestMethod.GET,
        connectTimeout:60000,
        readTimeout:60000
      },
      async (error: BusinessError, data: http.HttpResponse) => {
        if (error) {
          console.error(`http reqeust failed with. Code: ${error.code}, message: ${error.message}`);
        } else {
          if (ResponseCode.ResponseCode.OK === data.responseCode) {
            let imageBuffer: ArrayBuffer = data.result as ArrayBuffer;
            try {
              // 获取相册路径
              const context = getContext(this);
              let helper = photoAccessHelper.getPhotoAccessHelper(context);
              let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg')
              let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
              // 写入文件
              await fs.write(file.fd, imageBuffer);
              // 关闭文件
              await fs.close(file.fd);
            } catch (error) {
              console.error("error is " + JSON.stringify(error))
            }
          } else {
            console.error("error occurred when image downloaded!")
          }
        }
      })
  }
  ......
}

更多关于HarmonyOS鸿蒙Next中如何将一张网络图片保存到相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,将网络图片保存到相册可以通过以下步骤实现:

  1. 获取网络图片数据:使用HttpURLConnectionHttpClient等网络请求工具获取图片的字节流数据。

  2. 创建图片文件:在应用的沙盒目录或公共目录中创建一个文件,用于存储下载的图片数据。可以使用File类来创建文件。

  3. 写入图片数据:将获取到的图片字节流数据写入到创建的文件中。

  4. 将图片添加到相册:使用MediaScannerConnection类将图片文件添加到系统的相册中。通过MediaScannerConnection.scanFile方法,系统会自动扫描并添加该文件到相册。

  5. 权限处理:确保应用已经获取了读写外部存储的权限(如READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE),否则操作可能会失败。

  6. 处理异步操作:由于网络请求和文件写入是耗时操作,建议在子线程中执行这些操作,避免阻塞主线程。

通过以上步骤,可以在HarmonyOS鸿蒙Next中将网络图片保存到相册中。

在HarmonyOS鸿蒙Next中,保存网络图片到相册的步骤如下:

  1. 获取网络图片:使用HttpURLConnectionHttpClient下载图片数据。
  2. 创建位图:将下载的图片数据转换为PixelMap对象。
  3. 保存到相册:使用MediaLibrary API将PixelMap保存到设备的相册中。

示例代码:

// 1. 下载图片数据
byte[] imageData = downloadImage(url);

// 2. 创建PixelMap
PixelMap pixelMap = PixelMapUtils.createPixelMap(imageData);

// 3. 保存到相册
MediaLibrary mediaLibrary = MediaLibrary.getInstance(context);
MediaAsset mediaAsset = mediaLibrary.createMediaAsset(pixelMap, "JPEG", "MyAlbum");

确保在config.json中添加相应的权限:

"reqPermissions": [
    {
        "name": "ohos.permission.WRITE_MEDIA"
    }
]
回到顶部