【HarmonyOS】API9网络buffer图片加载

这篇具有很好参考价值的文章主要介绍了【HarmonyOS】API9网络buffer图片加载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 【引言】

HarmonyOS中加载网络图片常用的方法是直接给Image组件添加图片的网络地址,申请网络权限ohos.permission.INTERNET后就可以通过url加载对应的图片了,如HarmonyOS官网中的写法:

Image('https://www.example.com/example.JPG')

【问题概述】

但是日常开发中有些图片是存储云服务器中的,下载这些图片需要通过鉴权接口请求,获得的也不是图片的url地址而是二进制的图片buffer数据,类似于AGC中云存储的REST API接口:下载文件-REST API-Server-云存储 | 华为开发者联盟 (huawei.com),下面是官网Java示例代码:

public static void download(String storageUrl, DownloadObjectParam param) throws Exception {
   URIBuilder uriBuilder = new URIBuilder(storageUrl + param.getBucketName() + "/" + param.getObjectName());
   HttpGet get = new HttpGet(uriBuilder.build());
   get.setHeader("productId", param.getProjectId());
   get.setHeader("client_id", param.getClientId());
   get.setHeader("Authorization", "Bearer " + param.getToken());
   CloseableHttpClient httpClient = HttpClients.createDefault();
   CloseableHttpResponse httpResponse = httpClient.execute(get);
   int statusCode = httpResponse.getStatusLine().getStatusCode();
   if (statusCode == HttpStatus.SC_OK) {
       try (InputStream inputStream = httpResponse.getEntity().getContent();
            FileOutputStream outputStream = new FileOutputStream(getFileName(param.getObjectName()))) {
           // 将响应的实体流写入到本地文件,业务实际应用时,需要将FileOutputStream的入参改成业务指定的目录下
           byte[] buffer = new byte[1024];
           int len;
           while ((len = inputStream.read(buffer)) > 0) {
               outputStream.write(buffer, 0, len);
           }
           outputStream.flush();
       }
   }
   httpResponse.close();
}

上述代码中我们获取图片数据首先需要进行授权验证,验证通过接口会获取文件数据,然后就可以使用流的操作形式将数据保存再本地文件中展示,那么在HarmonyOS中我们该如何操作呢

【具体实现】

一、通过httpRequest构建GET请求,添加鉴权的header头文件,创建request请求

二、将获取data中的result数据创建pixelMap,解码编码PixelMap完成图片buffer的加载。

三、Image组件使用pixel数据完成加载

具体代码如下:文章来源地址https://www.toymoban.com/news/detail-627587.html

  private async httpRequest() {
   let httpRequest = http.createHttp()
   let url="storageUrl";
   let option={
     method:http.RequestMethod.GET,
     header:{
       "Authorization":"Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
       "productId":"",
       "client_id":""
     },
   }
   let _res= httpRequest.request(url ,option);  // 请填写一个具体的网络图片地址
   await _res.then((data) => {
         let code = data.responseCode
         if(ResponseCode.ResponseCode.OK == code) {
           let imageSource = image.createImageSource(data.result)
           let options = {alphaType: 0,                    // 透明度
             editable: false,                 // 是否可编辑
             pixelFormat: 3,                  // 像素格式
             scaleMode: 1,                    // 缩略值
             size: {height: 100, width: 100}} // 创建图片大小
           imageSource.createPixelMap(options).then((pixelMap) => {
             this.image = pixelMap
           })
         } else {
           console.log("response code: " + code)
         }
     }
   ).catch((err) => {
     console.log("error code: " + error.code + ", msg: " + error.message)
   });
 }

}

到了这里,关于【HarmonyOS】API9网络buffer图片加载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS开发:开源一个刷新加载组件

    系统Api中提供了下拉刷新组件Refresh,使用起来也是非常的好用,但是风格和日常的开发,有着巨大的出入,效果如下: 显然上面的效果是很难满足我们实际的需求的,奈何也没有提供的属性可以更改,没有办法只好动手封装一个。 本篇的文章内容大致如下: 1、下拉和上拉

    2024年02月06日
    浏览(35)
  • 华为 HarmonyOS 页面跳转

    我们新建2个页面(page),一个Hello World页面,一个Hello HarmonyOS页面,注意修改红色框内容,保持一致 导入导入router模块,页面跳转接口,添加按钮点击事件

    2024年01月24日
    浏览(46)
  • HarmonyOS ArkUI实战开发-NAPI 加载原理(下)

    上一节笔者给大家讲解了 JS 引擎解释执行到  import  语句的加载流程,总结起来就是利用  dlopen()  方法的加载特性向  NativeModuleManager  内部的链接尾部添加一个  NativeModule ,没有阅读过上节文章的小伙伴,笔者强烈建议阅读一下,本节笔者继续给大家讲解 JS 调用 C++ 方法

    2024年04月27日
    浏览(40)
  • 【华为鸿蒙】HarmonyOS概述:技术特性

    来源:HarmnyOS 官网 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/harmonyos-features-0000000000011907 多种设备之间能够实现硬件互助、资源共享,依赖的关键技术包括分布式软总线、分布式设备虚拟化、分布式数据管理、分布式任务调度等。 分布式软总线是手机、平板、智能穿戴

    2024年01月21日
    浏览(50)
  • 华为新发布的鸿蒙与目前华为手机的鸿蒙系统有什么差异,OpenHarmony、HarmonyOS、HarmonyOS NEXT的区别详解

    最近工作中需要进行鸿蒙适配,一开始我有个疑问,今年新发布的鸿蒙系统,与目前华为手机使用的鸿蒙系统有什么差异?为什么要专门进行适配?如果大家也有类似的疑问,看完这篇就明白了。 今年华为在鸿蒙生态千帆启航仪式上正式发布了鸿蒙原生操作系统——HarmonyO

    2024年04月17日
    浏览(59)
  • 华为发布 HarmonyOS NEXT 鸿蒙星河版

    在 2024-01-18 下午于深圳举办的鸿蒙生态千帆启航仪式上,华为常务董事兼终端BG CEO余承东宣布了HarmonyOS NEXT(鸿蒙星河版)的开发者预览版面向开发者开放申请。这一版本旨在实现六大极致原生体验,包括原生精致、易用、流畅、安全、智能和互联。 余承东表示,首批鸿蒙原

    2024年01月24日
    浏览(45)
  • 非华为机型如何体验HarmonyOS鸿蒙系统 刷写HarmonyOS鸿蒙GSI系统以及一些初步的bug修复

    最近很多视频网站有非华为机型使用HarmonyOS鸿蒙系统的演示。其实大都是刷了HarmonyOS鸿蒙系统gsi系统。体验还可以。有些刷入后bug较多。那么这些机型是如何刷写gsi?可以参考我以往帖子 安卓玩机搞机-----没有第三方包 刷写第三方各种GSI系统 体验非官方系统_gsi刷机包_安卓机

    2024年02月09日
    浏览(47)
  • 华为手表上架(1)HarmonyOS应用 打包 .app

    在本文中,我们介绍探讨华为手表上架的流程,并重点介绍HarmonyOS应用的打包过程。了解如何将应用程序转化为.app格式,以适配华为手表上的HarmonyOS操作系统。 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴开发 系统:window 开发工具:DevEco Studio 3.0.0.800 1.点击左

    2024年02月10日
    浏览(51)
  • HarmonyOS鸿蒙原生应用开发设计- 华为分享图标

    HarmonyOS设计文档中,为大家提供了独特的华为分享图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的华为分享图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的内容产生的侵权意外情况等,减少自主创作华为分享图标的工作量

    2024年02月08日
    浏览(68)
  • HarmonyOS实现几种常见图片点击效果

    HarmonyOS提供了常用的图片、图片帧动画播放器组件,开发者可以根据实际场景和开发需求,实现不同的界面交互效果,包括:点击阴影效果、点击切换状态、点击动画效果、点击切换动效。 image组件 :图片组件,用于图片资源的展示。 image-animator组件 :帧动画播放器,用以

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包