【ARK UI】HarmonyOS ETS如何创建PixeMap并显示Image组件上
参考资料
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组件上的更多相关文章
- 【ARK UI】HarmonyOS 从相册选择图片并显示到Image组件上
参考资料 [Harmony OS][ARK UI]ETS 上下文基本操作 [Harmony OS][ARK UI]ets使用startAbility或startAbilityForResult方式 ...
- HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)
Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...
- HTML5 UI框架Kendo UI Web中如何创建自定义组件(二)
在前面的文章<HTML5 UI框架Kendo UI Web自定义组件(一)>中,对在Kendo UI Web中如何创建自定义组件作出了一些基础讲解,下面将继续前面的内容. 使用一个数据源 ...
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在stor ...
- iOS开发UI篇—控制器的创建
iOS开发UI篇—控制器的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在代理方法中 ...
- 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false
关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...
- CRM WEB UI 01 BOL向导创建的搜索
创建BOL的步骤就不说了,自己找,学习这个之前,需要自己先找个SAP CRM资料预习一下 T-CODE:BSP_WD_CMPWB 1.创建组件:输入组件名:ZLYTEST03,点击创建按钮,回车,选择 ...
- 在iOS中怎样创建可展开的Table View?(上)
原文地址 本文作者:gabriel theodoropoulos 原文:How To Create an Expandable Table View in iOS 原文链接 几乎所有的app都有一个共 ...
- Ionic 2 中创建一个照片倾斜浏览组件
内容简介 今天介绍一个新的UI元素,就是当我们改变设备的方向时,我们可以看到照片的不同部分,有一种身临其境的感觉,类似于360全景视图在移动设备上的应用. 倾斜照片浏览 Ionic 2 实例开发 新增 ...
随机推荐
- js颜色调试器
1 /* ColorTestViewer 颜色调试器 2 3 attribute: 4 onchange: Function; //颜色改变回调; 默认null 5 6 //以下属性不建议直接修改 7 ...
- 解锁!玩转 HelloGitHub 的新姿势
本文不会涉及太多技术细节和源码,请放心食用 大家好,我是 HelloGitHub 的老荀,好久不见啊! 我在完成 HelloZooKeeper 系列之后,就很少"露面了".但是我对 ...
- HTML行内元素与块级元素有哪些及区别详解
转自 https://www.jb51.net/web/724286.html 这篇文章主要介绍了HTML行内元素与块级元素有哪些及区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具 ...
- 在 4GB 物理内存的机器上,申请 8G 内存会怎么样?
作者:小林coding 计算机八股文刷题网站:https://xiaolincoding.com/ 大家好,我是小林. 看到读者在群里讨论这些面试题: 其中,第一个问题「在 4GB 物理内存的机器上, ...
- 2021.05.04【NOIP提高B组】模拟 总结
T1 题目大意, \(S_{i,j}=\sum_{k=i}^j a_k\) ,求 \(ans=\min\{ S_{i,j}\mod P|S_{i,j}\mod P\ge K \}\) 其中 \(i\l ...
- 深入理解springboot的自动注入
一.开篇 在平时的开发过程中用的最多的莫属springboot了,都知道springboot中有自动注入的功能,在面试过程中也会问到自动注入,你知道自动注入是怎么回事吗,springboot是如何 ...
- 论文解读(GCC)《Efficient Graph Convolution for Joint Node RepresentationLearning and Clustering》
论文信息 论文标题:Efficient Graph Convolution for Joint Node RepresentationLearning and Clustering论文作者:Chaki ...
- sql-DCL用户及权限管理及其他常用命令-mysql
查看系统信息 SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- 显示系统变量信息 SELECT now(), user(), version(); -- ...
- Python教程:执行cmd命令
我们通常可以使用os模块的命令进行执行cmd 方法一:os.system def system(*args, **kwargs): # real signature unknown "&qu ...
- 在mybatis中使用sum函数返回对象为Null
首先大家看一下我的XML中的SQL .DAO 和实体对象 XML DAO PO 乍一看 没毛病. 但是在Mybatis中使用sum函数,如果返回值是0(就是你在Navicat中运行的的sql正常,结 ...