​参考资料

图片处理

Context模块

api讲解

image.createPixelMap

createPixelMap(number: fd, options: InitializationOptions): Promise

通过属性创建PixelMap,通过Promise返回结果。

系统能力: SystemCapability.Multimedia.Image

参数:

返回值:

示例:

  image.createPixelMap(fd, opts).then((pixelMap) => {
this. mypixemap=pixelMap
}).catch((err) => {
console.log("create pixelMap with data fail: " + err.data)
})

代码实现

  • 准备工作

    1.准备一张图片放在rawfile文件目录,如下图所示

  • 申请权限

    在config.json注册如下权限代码如下

    "reqPermissions": [
    {
    "name": "ohos.permission.READ_USER_STORAGE"
    },
    {
    "name": "ohos.permission.WRITE_USER_STORAGE"
    },
    {
    "name": "ohos.permission.SET_WALLPAPER"
    }
    ],

    在mainAbility注册申请权限,并把图片写入指定文件夹目录下,代码如下

    package com.newdemo.myapplication;
    
    import ohos.ace.ability.AceAbility;
    import ohos.aafwk.content.Intent;
    import ohos.global.resource.RawFileEntry;
    import ohos.global.resource.Resource; import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException; public class MainAbility extends AceAbility {
    @Override
    public void onStart(Intent intent) {
    String[] permissions = {
    "ohos.permission.WRITE_USER_STORAGE",
    "ohos.permission.READ_USER_STORAGE"
    };
    requestPermissionsFromUser(permissions, 0);
    super.onStart(intent);
    writeToDisk( "entry/resources/rawfile/result.png","/result.png");
    } private void writeToDisk(String rawFilePath, String resultpath) {
    String externalFilePath = getFilesDir() +resultpath ;
    File file = new File(externalFilePath);
    if (file.exists()) {
    return;
    }
    RawFileEntry rawFileEntry = getResourceManager().getRawFileEntry(rawFilePath);
    try (FileOutputStream outputStream = new FileOutputStream(new File(externalFilePath))) {
    Resource resource = rawFileEntry.openRawFile();
    // cache length
    byte[] cache = new byte[1024];
    int len = resource.read(cache);
    while (len != -1) {
    outputStream.write(cache, 0, len);
    len = resource.read(cache);
    }
    } catch (IOException exception) {
    }
    }
    }

  • Ets语言实现

    在组件加载完成之前(aboutToAppear函数)把图片路径转场pixeMap并显示Image组件上,代码如下

    import image from '@ohos.multimedia.image';
    import fileio from '@ohos.fileio';
    import featureAbility from '@ohos.ability.featureAbility' @Entry
    @Component
    struct ImagePages {
    //todo 自定义PixelMap 对象
    @State mypixemap: PixelMap= undefined;
    //todo 在组件加载前aboutToAppear的吧路径转化为pixemap
    public aboutToAppear() {
    //todo 获取context环境
    let context = featureAbility.getContext();
    //todo 获取当前files路基
    context.getFilesDir((err, data) => {
    if (err) {
    console.error('Operation failed. Cause: ' + JSON.stringify(err));
    return;
    }
    console.info('Operation successful. Data:' + JSON.stringify(data));
    //todo 得到fd
    let fd = fileio.openSync(data + "/result.png")
    console.log('fd: ' + fd)
    //todo 自定义opts参数
    let defaultSize = {
    "height": 226,
    "width": 405
    }
    let opts = {
    "sampleSize": 1,
    "rotate": 0,
    "editable": true,
    "desiredSize": defaultSize,
    "desiredRegion": {
    "size": defaultSize,
    "x": 0,
    "y": 0
    },
    "desiredPixelFormat": 3,
    };
    //todo 创建pixeMap对象
    image.createPixelMap(fd, opts).then((pixelMap) => {
    //todo 创建成果
    this.mypixemap = pixelMap
    }).catch((err) => {
    //todo 创建失败
    console.log("create pixelMap with data fail: " + err.data)
    })
    });
    } build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
    //todo 把pixeMap 显示在Image组件上
    Image(this.mypixemap).width(405).height(226)
    }
    .width('100%')
    .height('100%')
    }
    }

    运行效果

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

【ARK UI】HarmonyOS ETS如何创建PixeMap并显示Image组件上的更多相关文章

  1. 【ARK UI】HarmonyOS 从相册选择图片并显示到Image组件上

    ​ 参考资料 [Harmony OS][ARK UI]ETS 上下文基本操作 [Harmony OS][ARK UI]ets使用startAbility或startAbilityForResult方式 ...

  2. HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)

    Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...

  3. HTML5 UI框架Kendo UI Web中如何创建自定义组件(二)

    在前面的文章<HTML5 UI框架Kendo UI Web自定义组件(一)>中,对在Kendo UI Web中如何创建自定义组件作出了一些基础讲解,下面将继续前面的内容. 使用一个数据源 ...

  4. iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

    iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在stor ...

  5. iOS开发UI篇—控制器的创建

    iOS开发UI篇—控制器的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在代理方法中 ...

  6. 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false

    关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...

  7. CRM WEB UI 01 BOL向导创建的搜索

    创建BOL的步骤就不说了,自己找,学习这个之前,需要自己先找个SAP CRM资料预习一下 T-CODE:BSP_WD_CMPWB 1.创建组件:输入组件名:ZLYTEST03,点击创建按钮,回车,选择 ...

  8. 在iOS中怎样创建可展开的Table View?(上)

    原文地址 本文作者:gabriel theodoropoulos 原文:How To Create an Expandable Table View in iOS 原文链接 几乎所有的app都有一个共 ...

  9. Ionic 2 中创建一个照片倾斜浏览组件

    内容简介 今天介绍一个新的UI元素,就是当我们改变设备的方向时,我们可以看到照片的不同部分,有一种身临其境的感觉,类似于360全景视图在移动设备上的应用. 倾斜照片浏览 Ionic 2 实例开发 新增 ...

随机推荐

  1. Camunda开源流程引擎快速入门——Hello World

    市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.由于jbpm.activiti.flowable这几个流程引擎出现的比较早,国内人用的 ...

  2. JavaScript 防盗链的原理以及破解方法

    先说说防盗链的原理,http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referer.这里的Referer是由于历史原因导致了拼写错误 后来也就一直沿用.图片服务器通过检测 ...

  3. 利用XtraDiagram.DiagramControl进行流程图形的绘制和控制

    DevExpress提供了一个比较强大的图形绘制工具,可以用于绘制各种图形,如流程图.组织机构图等等,本篇随笔介绍XtraDiagram.DiagramControl的使用,以及利用代码对其属性进行控 ...

  4. Vue 安装 vue的基本使用 vue的初步使用步骤

    1. 资源: https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5 进入官网学习 2. 点击安装,要把vue下载到本地文件的根目录中,不要选择压缩版的,这 ...

  5. 【python基础】第10回 周总结

    路径 可以简单的理解为路径就是某个事物所在的具体位置(坐标) 1.相对路径:必须有一个参考系,就是相对于自己的目标文件的位置. 2.绝对路劲:不需要有参考系,是指文件在硬盘上真正存在的路径. 计算机五 ...

  6. Python自动化办公:将文本文档内容批量分类导入Excel表格

    序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 它来了,它又来了. 本文实现用Python将文本文件自动保存到Excel表格里面去. 需求 将锦江区.t ...

  7. AI 绘画极简教程

    昨天在朋友圈发了几张我用AI绘画工具Disco Diffusion画的画 既然有同学问,就写个极简教程吧,画个图是足够了,想要深入了解还是自行百度吧,可以找到更详细的教程. 第 0 步:学会上网,注册 ...

  8. SLSA 框架与软件供应链安全防护

    随着软件供应链攻击浪潮愈演愈烈,Google 发布了一系列指南来确保软件包的完整性,旨在防止影响软件供应链的未经授权的代码修改.新的 Google SLSA 框架(Supply-chain Level ...

  9. List集合_介绍&常用方法和ArrayList集合

    List集合 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢? 接下来,我们一起学习Collection中的常用几个子类(java.util ...

  10. C# 11 的新特性和改进前瞻

    前言 .NET 7 的开发还剩下一个多月就要进入 RC,C# 11 的新特性和改进也即将敲定.在这个时间点上,不少新特性都已经实现完毕并合并入主分支 C# 11 包含的新特性和改进非常多,类型系统相比 ...