#鸿蒙通关秘籍#如何在鸿蒙HarmonyOS NEXT开发中下载和保存网络图片?

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
CPL风细语

为了在应用中下载和保存网络图片,首先使用http请求获取在线图片数据,并将其转换为PixelMap格式以便在页面展示。

http.createHttp()
    .request('图片URL位置',
        (error: BusinessError, data: http.HttpResponse) => {
            if (error) {
                promptAction.showToast({
                    message: $r('app.string.image_request_fail'),
                    duration: 2000
                })
                return
            }
           this.transcodePixelMap(data);
           if (data.result instanceof ArrayBuffer) {
               this.imageBuffer = data.result as ArrayBuffer;
           }
        })

其次,将ArrayBuffer类型的图片转换为PixelMap类型进行展示。

transcodePixelMap(data: http.HttpResponse) {
    let code: http.ResponseCode | number = data.responseCode;
    if (ResponseCode.ResponseCode.OK === code) {
        let imageData: ArrayBuffer = data.result as ArrayBuffer;
        let imageSource: image.ImageSource = image.createImageSource(imageData);
        let options: Record<string, number | boolean | tmp> = {
            'alphaType': 0, 
            'editable': false,
            'pixelFormat': 3,
            'scaleMode': 1,
            'size': { height: 100, width: 100 }
        };
        imageSource.createPixelMap(options).then((pixelMap: PixelMap) => {
            this.image = pixelMap;
            this.isShow = true
        });
    }
}

最后,将图片数据保存到图库或用户选择的路径:

async saveImage(buffer: ArrayBuffer | string): Promise<void> {
    let context = getContext(this) as common.UIAbilityContext;
    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, buffer);
    await fs.close(file.fd);
}
分享
微博
QQ
微信
回复
7天前
相关问题
HarmonyOS 保存网络图片,图库更新
272浏览 • 1回复 待解决
如何保存网络图片到相册
710浏览 • 1回复 待解决
HarmonyOS 保存网络图片至图库问题
217浏览 • 1回复 待解决
获取网络图片保存到相册
1427浏览 • 1回复 待解决
怎么实现保存网络图片到相册功能?
294浏览 • 1回复 待解决
HarmonyOS 请求网络图片
377浏览 • 1回复 待解决
HarmonyOS Image 加载网络图片问题
700浏览 • 1回复 待解决
HarmonyOS 网络图片加载不显示
25浏览 • 1回复 待解决
如何获取网络图片的尺寸?
427浏览 • 1回复 待解决
Image组件如何加载网络图片
2609浏览 • 1回复 待解决