硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2742|回复: 12
收起左侧

[emWin] 请教JPEG的显示问题

[复制链接]

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
发表于 2016-12-16 17:44:18 | 显示全部楼层 |阅读模式
        BMP和JPEG的显示我用的是非储存器显示,我从SD卡中读数据然后调用GUI_BMP_DrawEx()  和GUI_JPEG_DrawEx();  来显示图片。仿照Eric的教程写的_getdata函数,显示BMP图片没问题,显示JPEG图片的时候显示的是背景色。教程上非存储BMP的时候开辟的buff是一行像素*4,JPEG的时候变成8K了,能显示BMP图片不能显示JPEG,和内存有关系?
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-16 19:19:20 | 显示全部楼层
我发现了个新的问题,如果我在 获取SD卡数据函数GetData()中添加GUI_DispStringAt() 显示一串字符,原来能显示BMP的程序,就不显示BMP图片了,但是把GetData函数中显示字符的函数去掉就 又能显示BMP图片了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2016-12-17 09:45:39 | 显示全部楼层
特别注意一点,显示JPEG图片,动态内存一定要足够大,弄个100KB以上的,显示个小JPEG图片看看。
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-17 09:55:05 | 显示全部楼层

回 eric2013 的帖子

eric2013:特别注意一点,显示JPEG图片,动态内存一定要足够大,弄个100KB以上的,显示个小JPEG图片看看。 (2016-12-17 09:45) 
硬汉早上好,我不将一张图片全部读到RAM显示,而是从用Getdata函数获得图片数据然后显示这样也需要大内存?这个内存指给emwin配置的时候分配的那个内存吗? bmp图片可以显示,但是我在Getdata函数中加一条显示字符的函数GUI_DispString();  函数bmp也就不显示了,这大概是什么情况呢,想不明白
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2016-12-17 09:58:24 | 显示全部楼层

回 业未央 的帖子

业未央:硬汉早上好,我不将一张图片全部读到RAM显示,而是从用Getdata函数获得图片数据然后显示这样也需要大内存?这个内存指给emwin配置的时候分配的那个内存吗? bmp图片可以显示,但是我在Getdata函数中加一条显示字符的函数GUI_DispString();  函数bmp也就不显示了,这大 .. (2016-12-17 09:55) 
对的,JPEG解码固定需要30KB,还有外加不同宽度对解码时内存的需求。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2016-12-17 09:58:40 | 显示全部楼层
444.png
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-17 10:13:42 | 显示全部楼层

回 eric2013 的帖子

eric2013: (2016-12-17 09:58) 
我注意到手册上这了,我以为说的这个内存是如果将图片全部加载到存储区需要的RAM,我板子上用的f103RB RAM20KB,买的f103RD的片子还没到,到了我换上把RAM扩大一下试试。
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-17 10:15:36 | 显示全部楼层

回 eric2013 的帖子

eric2013: (2016-12-17 09:58) 
我用Getdata函数从SD卡读BMP图片,如果GetData函数没有显示字符的函数GUI_DispString()可以正常显示图片,加上字符显示的函数BMP图片就显示不出来了,但是字符显示的读图片正常
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-17 12:03:34 | 显示全部楼层

回 eric2013 的帖子

eric2013:对的,JPEG解码固定需要30KB,还有外加不同宽度对解码时内存的需求。

 (2016-12-17 09:58) 
eric帮我个忙吧,我没有你们的板子,你在无需加载到存储器显示显示BMP图片的例程中,_getdata() 函数中添加GUI_DispStringAt() 函数在一个位置显示字符串,看看字符串和BMP图片能同时显示吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2016-12-18 09:48:00 | 显示全部楼层

回 业未央 的帖子

业未央:eric帮我个忙吧,我没有你们的板子,你在无需加载到存储器显示显示BMP图片的例程中,_getdata() 函数中添加GUI_DispStringAt() 函数在一个位置显示字符串,看看字符串和BMP图片能同时显示吗 (2016-12-17 12:03) 
GUI_DispStringAt()函数应该在GUI_BMP_DrawEx() 之后调用。不要在GUI_BMP_DrawEx() 的回调函数里面调用。
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-18 09:50:48 | 显示全部楼层

回 eric2013 的帖子

eric2013:GUI_DispStringAt()函数应该在GUI_BMP_DrawEx() 之后调用。不要在GUI_BMP_DrawEx() 的回调函数里面调用。 (2016-12-18 09:48) 
为什么呢?原因有点想不明白,我看了下gui的源码,也没看出个123来。。。
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-18 09:57:36 | 显示全部楼层

回 eric2013 的帖子

eric2013:GUI_DispStringAt()函数应该在GUI_BMP_DrawEx() 之后调用。不要在GUI_BMP_DrawEx() 的回调函数里面调用。 (2016-12-18 09:48) 
还有个个问题向您请教一下,我用的是不带操作系统,我看你的书上说需要实现一个的自增,extern volatile GUI_TIMER_TIME  OS_TimeMS;  我用定时器3每隔1ms一个中断里边去使这个变量自增,但是一调用GUI_Delay() 就黑屏,定时器也正常,找问题也没找见。。。
回复

使用道具 举报

17

主题

107

回帖

158

积分

初级会员

迎风而舞,扶摇直上九万里。

积分
158
 楼主| 发表于 2016-12-18 11:26:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:GUI_DispStringAt()函数应该在GUI_BMP_DrawEx() 之后调用。不要在GUI_BMP_DrawEx() 的回调函数里面调用。 (2016-12-18 09:48) 
GUI_Delay(); 黑屏原因找到了,WM_SetCreateFlags(WM_CF_MEMDEV); GUI_Init(); 如果在初始化之前调用窗口函数就会黑屏,我在初始化之后再调用窗口函数就不黑屏了,稍后做窗口管理实验的时候再看看对窗口会不会有影响
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 15:28 , Processed in 0.301145 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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