华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 154|回复: 0

【UI Creator应用示例】如何使用基于UI Creator的高性能图像imgex

[复制链接]

3

主题

7

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2024-4-1 11:15:50 | 显示全部楼层 |阅读模式
本帖最后由 wuttttt 于 2024-4-1 11:26 编辑

在上位机中创建的图像控件区别于标准的LVGL图像(image)控件,我们称之为高性能图像(imgex),本文将着重讲解如何在程序中创建一个高性能图像控件,如何利用imgex-conv将图片转换为imgex可以识别的文件并从磁盘中加载显示。
高性能图像区别于标准的LVGL图像,无需提前将图片转换为数组或者位图的形式,可以直接加载经imgex-conv转换后的jpg/png图片,大大降低存储容量的需求。因此我们在代码中创建图像控件时,可以优先考虑创建高性能图像(imgex)。值得注意的是,我们使用的图片大小不能超过屏幕的大小,否则可能会显示异常。

硬件平台:SWDM-QFP100-34SVEA3、JLT4301A(480x272)
仿真器:Jlink V9
软件平台:MDK5.33及以上

先用UI_Creator_v2.3.0创建一个480x272的工程界面,不放置任何控件,模拟仿真后将其导入SWDM-QFP100-34SVEA3平台,此时平台只有白屏显示,如下图:
1.jpg

接着准备好想要显示的图片,将其拖拽到UI_Creator\imgex-conv.exe后松开,会在图片路径下生成对应的同名*.bin文件,如下图:
2.png

      转换完毕后,将生成的img.bin文件与ui.bin和SynwitManifest.cfg文件一同拷贝至SPI Flash中,如下图:
       3.png

接着编写程序,打开screen001.c添加如下代码:
  1.         lv_obj_t *img_test = lv_imgex_create(synwit_ui_find_lv_obj(SCREEN001), NULL);       /* 在SCREEN001创建高性能图像imgex控件 */
  2.         img_src = synwit_ui_load_image_file("S:spi:img.bin");           /* 加载imgex-conv转换出的图片 */
  3.         lv_imgex_set_src(img_test, img_src);                                   /* 设置imgex的源数据 */
  4.         lv_obj_set_pos(img_test, 0, 0);                                            /* 设置imgex的位置 */
复制代码

  由于改图片资源加载是用户手动加载的,并非UI框架调度,因此用完时需要及时释放该内存
  1. synwit_ui_unload_image(img_src);                                              /* 退出时释放资源 */
复制代码
       添加代码后编译下载,效果如下图所示
4.jpg

至此,我们通过代码创建了高性能图像(imgex),同样地,在上位机中创建的图像控件,也可以按照此方法换源文件,这里不再赘述。

       附件:测试图片、该Demo的UI Creator工程以及Keil工程
       imgex_240401.zip (6.11 MB, 下载次数: 4)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2024-5-20 13:38 , Processed in 0.031902 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表