HarmonyOS 如何获取网络图片的二进制文件(优先在内存中操作)

小程序插件,需要通过用户提供的url从网络上获取图片的二进制文件(不一定是二进制格式),放在内存变量里,再根据变量中的二进制数据生成图片存储到用户的相册里。(诉求:尽量将图片存放在内存中,而不要放在应用的缓存目录下。这样可以减少app不必要的文件占用。)

HarmonyOS
2024-08-23 00:08:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple
import http from '@ohos.net.http'; 
import ResponseCode from '@ohos.net.http'; 
import image from '@ohos.multimedia.image'; 
import { BusinessError } from '@ohos.base'; 
import photoAccessHelper from '@ohos.file.photoAccessHelper' 
import fs from '@ohos.file.fs' 
@Entry 
@Component 
struct LoadImgFromUrl { 
  @State pixelMap: PixelMap | undefined = undefined; 
  loadImageWithUrl(url: string) { 
    let OutData: http.HttpResponse 
    let imagePackerApi = image.createImagePacker(); 
    let packOpts : image.PackingOption = { format:"image/jpeg", quality:98 }; 
    //确保网络正常 
    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 { 
          OutData = data 
          let code: http.ResponseCode | number = OutData.responseCode 
          if (ResponseCode.ResponseCode.OK === code) { 
            let imageData: ArrayBuffer = OutData.result as ArrayBuffer; 
            let imageSource: image.ImageSource = image.createImageSource(imageData); 
            class tmp { 
              height: number = 100 
              width: number = 100 
            } 
            let si: tmp = new tmp() 
            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.pixelMap = pixelMap 
              this.pixelMap.getImageInfo().then((info: image.ImageInfo) => { 
                console.info('info.width = ' + info.size.width) 
              }).catch((err: BusinessError) =>{ 
                console.error("Faild " + err);
分享
微博
QQ
微信
回复
2024-08-23 16:12:30
相关问题
如何直接加载二进制图片
2791浏览 • 1回复 待解决
native层如何访问rawfile二进制文件
1941浏览 • 1回复 待解决
如何二进制进行AES解密?
239浏览 • 1回复 待解决
jsbind--二进制包导入指导
839浏览 • 1回复 待解决
HarmonyOS gzip二进制流压缩和解压缩
796浏览 • 1回复 待解决
如何获取网络图片尺寸?
469浏览 • 1回复 待解决
HarmonyOS 请求网络图片
408浏览 • 1回复 待解决
获取网络图片并保存到相册
1494浏览 • 1回复 待解决
服务卡片image怎么获取网络图片
7005浏览 • 2回复 待解决
页面加载前获取网络图片宽高
709浏览 • 1回复 待解决