Kanzi开发的时候会遇到需要从外部读取图片的情况。Kanzi2.8版本和3.3版本读取方法稍有不同,我们先看看2.8版本的api。

【2.8版本】

1)首先要从文件中读取一张图片

struct KzcImage* img;
kzcImageLoadFile(kzaApplicationGetSystemMemoryManager(application),"1.png",& img);

2)把文件中读取到的图片转成Texture

KzuImageTexture* texture;
kzuImageTextureCreateFromImage(resMgr, "FileTexture",
img, KZU_TEXTURE_FILTER_BILINEAR, KZU_TEXTURE_WRAP_CLAMP, 0.0f, &texture);

或者从内存数据中创建一个Texture:

kzuImageTextureCreateFromMemory(resourceManger,name,

                                        KZU_TEXTURE_CHANNELS_RGB,

                                        img.width(), img.height(), img.bits(),

                                        KZU_TEXTURE_FILTER_BILINEAR, KZU_TEXTURE_WRAP_CLAMP, &imageTexture);

其中resourceManger是一个ResourceManger对象,name为Texture的名称,KZU_TEXTURE_CHANNELS_RGB为创建的图像模式,bits()为图片数据,最终创建到imageTexture中。

3)创建之后转成resource并赋给plane节点

struct KzuResource* out_resource;

out_resource = kzuImageTextureToResource(texture);

kzuObjectNodeSetResourceIDResourceProperty(planeNode,KZU_PROPERTY_TYPE_TEXTURE,out_resource);

kzuObjectNodeSetIntProperty(m_planeNode, KZU_PROPERTY_TYPE_BLEND_MODE, );

kzuResourceRelease(out_resource);

【3.3版本】

3.3可以参考kanzi安装目录下的 virtual listbox的例子。

下面是例子中的关键代码:

 if (m_itemInfo->m_objectNode && m_image)
{
Domain* domain = m_itemGenerator->m_listBox->getDomain(); // Create texture from image. If the image data format is correct, this shouldn't use any memory manager.
// Image texture will own the image so no need to delete it manually.
TextureSharedPtr texture = Texture::create(domain, m_image, Texture::CreateFlagClampAddress);
m_itemInfo->m_objectNode->setProperty(StandardMaterial::TextureProperty, texture); // Adjust size of plane for displaying the image.
Node3DSharedPtr imagePlaneNode = m_itemInfo->m_objectNode->lookupNode<Node3D>("Stack Layout/Plane"); kzUint height = kzcImageGetHeight(m_image);
kzUint width = kzcImageGetWidth(m_image);
float aspect = width * 1.0f / height; kzFloat widthFactor = aspect;
kzFloat heightFactor = 1.0f; if(aspect > 1.0f)
{
widthFactor = 1.0f;
heightFactor = 1.0f / aspect;
} imagePlaneNode->setLayoutTransformation(Matrix4x4::createScale(Vector3(widthFactor, heightFactor, 1.0f))); // Ownership of image was transferred to the texture.
m_image = ;
} // Remove task.
m_itemGenerator->m_tasksByItems.erase(m_itemInfo);

3.3版本的代码暂时还没有分析,待补充……

Kanzi编程基础3 - 图片读取与显示的更多相关文章

  1. Kanzi编程基础2 - Kanzi节点读取和属性设置

    UI设计师在Kanzi studio把Kanzi的节点做好后,就要编码读取这些节点并根据实际功能去控制刷新它. Kanzi读取节点的api发生过很多次变化,从2.7.2.8到3.0,每次变化都比较大, ...

  2. Kanzi编程基础1 - 定时器Timer

    Kanzi虽然发生了比较多的版本更迭,api也发生了很多变化,但定时器的头文件一直都在一个地方:#include "user/include/user/ui/message/kzu_mess ...

  3. OpenCV笔记(1)(图片读取与现实、色彩空间、基础运算、均值方差、逻辑运算、泛洪填充、均值中值及自定义平滑)

    一.图片读取和显示 import cv2 as cv # 图片读取cv.imread(img_path) car_img = cv.imread("car1.png") # 图片显 ...

  4. 图像的读取,显示与保存(基于skimage模块)

    一 skiamge模块 skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能.它 ...

  5. FileReader:读取本地图片文件并显示

    最近忙得比狗还惨,导致长时间没能更新文章,真心对不住啊.抽空整理了下关于在页面上读取和显示本地图片的实例文章,本文通过实例讲解如何使用支持FileReader浏览器的用户将能够通过一个file inp ...

  6. spring从服务器磁盘读取图片,然后显示于前端页面上

    需求是,前台通过传参,确定唯一图片,然后后台在服务器磁盘中读取该图片,然后显示于前台页面上. 后台代码: @RequestMapping("unit/bill/showeinvoice&qu ...

  7. [转]opengl入门例题(读取bmp图片,并显示)

    #include<gl/glut.h> #define FileName "bliss.bmp" static GLint imagewidth; static GLi ...

  8. python中用opencv读取并显示图片

    一.读取并显示图片: import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读 ...

  9. java IO流读取图片供前台显示

    最近项目中需要用到IO流来读取图片以提供前台页面展示,由于以前一直是用url路径的方式进行图片展示,一听说要项目要用IO流读取图片感觉好复杂一样,但任务下达下来了,做为程序员只有选择去执行喽,于是找了 ...

随机推荐

  1. js瀑布流(定位法)

    1.首先,自己写好图片路径,引入jquery <!DOCTYPE html> <html> <head> <meta charset="utf-8& ...

  2. centos6.4 挂载新盘并移动mysql数据目录

    1 centos 挂载新盘并格式化 以vmware workstation12 中安装的centos6. 虚拟机为例进行演示 关机,添加硬盘 开机,格式化硬盘,并挂载 通过命令查看硬盘 fdisk – ...

  3. ASP.NET MVC Web API For APP

    近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过在浏览器中使用 JavaScr ...

  4. Unity Mono IDE Setting

    Mac: 修改快捷键 删除一整行 Delete Entire Line    Command+D Format Document   Shift+Command+F 在文件中查找 Fin in Fil ...

  5. 屌丝程序员的梦想 (二) 屌丝IT梦开始地方

    校区的周围有很多的网吧,一个对电子游戏迷恋了许久的青少年来说,那绝对是不可不去的地方,键盘,鼠标,显示器,那一切看起来都那么完美,那么似曾相识,是啊,魂牵梦绕的IT梦...哦..当时那只是电子游戏梦. ...

  6. Life Cycle of Thread – Understanding Thread States in Java

    Life Cycle of Thread – Understanding Thread States in Java 深入理解java线程生命周期. Understanding Life Cycle ...

  7. SetSysColors 修改系统颜色

    首先我们来看一下SetSysColors函数的原型: BOOL WINAPI SetSysColors( __in int cElements, //要改变的对象的数量 __in const INT* ...

  8. 前端构建 build 技术 nodejs gulp

    https://www.sitepoint.com/introduction-gulp-js/ 参照这个例子做一遍,就会明白,中间会有个问题 npm install jshint 需要修正为 npm ...

  9. NODEJS 在Centos下面的自动启动

    直接上代码 #!/bin/sh ## chkconfig: 345 99 10# description: Node.js /home/cekimy/index.js# . /etc/rc.d/ini ...

  10. Android ps命令执行后的各项参数含义

    直接输入ps后可以看到如下信息: # ps ps USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME root      1    ...