Skip to content

TUISYS/jpg_png_bmp_gif_demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TUI 各种类型格式图片解析测试教程

描述

TUI V2.1 以上版本支持各种类型格式图片解析(jpg、png、bmp、gif) 该仓库只提供了.jpg.png头文件接口和测试demo,实际应用要结合TUISYS/tui_project仓库里面的tui库文件。 直接将头文件放进TUISYS/tui_project/includes,然后应用#include就可以调用相关函数了。

jpg图片

支持.jpg文件的读取解析,和jpg buffer的解析,支持原图、1/2、1/4、1/8的尺寸缩小的解析。
解析函数有两个,一个是.jpg文件解析(tui_jpeg_decode_jpegfile_to_argbbuf函数)和jpg buffer解析(tui_jpeg_decode_jpegbuf_to_argbbuf函数),这两个函数解析成功,会返回一个argb的buffer,然后通过image控件的函数tui_image_set_image_argb_buf()设置给控件,创建成功后需要释放这个内存,调用tui_jpeg_decode_free_argbbuf函数释放内存,否则会有内存泄漏。(参考test.c)
简单创建jpg图片控件,适合不频繁刷新的场景,每次刷新会重新解码,代码如下:

void tui_image_test(void)
{
	tui_obj_t * obj;
	tui_image_attri_t attri = { 0 };//注意先清空结构体,避免随机值

	obj = tui_image_create(tui_layer_normal());

	/* 通用属性 */
	attri.obj.pt.x = 200;
	attri.obj.pt.y = 100;

	tui_image_set_attri(obj, &attri);
	tui_image_set_image_src(obj, 0, "E:\\image\\qq.jpg");
	tui_image_set_cur_img_index(obj, 0);
}

png图片

支持.png文件的读取解析。
解析函数对.png文件解析(tui_png_decode_pngfile_to_rgbabuf函数)这个函数解析成功,会返回一个rgba的buffer,然后通过image控件的函数tui_image_set_image_rgba_buf()设置给控件,创建成功后需要释放这个内存,需要调用tui_png_decode_free_rgbabuf函数释放内存,否则会有内存泄漏。(参考test.c)
简单创建png图片控件,适合不频繁刷新的场景,每次刷新会重新解码,代码如下:

void tui_image_test(void)
{
	tui_obj_t * obj;
	tui_image_attri_t attri = { 0 };//注意先清空结构体,避免随机值

	obj = tui_image_create(tui_layer_normal());

	/* 通用属性 */
	attri.obj.pt.x = 200;
	attri.obj.pt.y = 100;

	tui_image_set_attri(obj, &attri);
	tui_image_set_image_src(obj, 0, "E:\\image\\cool.png");
	tui_image_set_cur_img_index(obj, 0);
}

bmp图片

支持16、24、32位.bmp文件的读取解析,通过image控件的函数tui_image_set_image_src()设置给控件。
创建bmp图片控件代码如下:

void tui_image_test(void)
{
	tui_obj_t * obj;
	tui_image_attri_t attri = { 0 };//注意先清空结构体,避免随机值

	obj = tui_image_create(tui_layer_normal());

	/* 通用属性 */
	attri.obj.pt.x = 200;
	attri.obj.pt.y = 100;

	tui_image_set_attri(obj, &attri);
	tui_image_set_image_src(obj, 0, "E:\\image\\fly_32bit.bmp");//支持fly_16bit.bmp,fly_24bit.bmp
	tui_image_set_cur_img_index(obj, 0);
}

gif图片

支持.gif文件的读取解析和循环播放,通过gif控件的属性将路径设置给控件。gif动画图片支持纯绿色(0,255,0)关键颜色透明。
创建gif图片控件代码如下:

void tui_gif_test(void)
{
	tui_obj_t * obj;
	tui_gif_attri_t attri = { 0 };//注意先清空结构体,避免随机值

	obj = tui_gif_create(tui_layer_normal());

	/* 通用属性 */
	attri.obj.pt.x = 200;
	attri.obj.pt.y = 100;
	attri.mode = TUI_IMAGE_LOOP;
	strcpy(attri.gif_path, "E:\\image\\led.gif");//绿色是关键颜色(透明色)

	tui_gif_set_attri(obj, &attri);
}

About

🔧 TUI 支持各种类型格式图片解析

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages