- 黄山派
- LVGL_V8
- 例程参考:lvgl_v8_examples 显示TF卡图片例程
我想根据例程写一个循环显示TF卡内JPG图片的小工程,但是目前碰到的问题是循环显示只能显示出第一张图片吗,其他图片显示NO data【后面有图】。单独编译显示每张图片都是可行的。看了下说可能是缓存未释放导致的,但是试了几种方式都不行,有没有可行的解决方式?
LOG显示都正常,没有报错,程序运行正常,只是除第一张显示图片外都显示No data.
TF_JPG_display_t jpg_display; // JPG显示结构体
void TF_JPG_display(void *parameter)
{
jpg_display.img_obj = lv_img_create(lv_scr_act());
while (1)
{
for(int i = 5; i >= 1; i--)
{
// // 先清理之前的图片资源
// lv_img_cache_invalidate_src(jpg_display.img_obj);
//jpg_display = NULL;
/* Assuming a File system is attached to letter 'A'
* E.g. set LV_USE_FS_STDIO 'A' in lv_conf.h */
rt_snprintf(jpg_display.file_path, sizeof(jpg_display.file_path),
"A:/picture/%d.jpg",
i);
lv_img_set_src(jpg_display.img_obj, jpg_display.file_path);
const void * src = lv_img_get_src(jpg_display.img_obj);
lv_img_decoder_get_info(src, &jpg_display.img_header);
lv_coord_t width = jpg_display.img_header.w;
lv_coord_t height = jpg_display.img_header.h;
lv_obj_set_pos(jpg_display.img_obj, (LCD_WIDTH - width) / 2 , (LCD_HEIGHT - height) / 2); // 居中显示
rt_thread_mdelay(2000);
}
}
}
