OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11106|回复: 10

关于GIF的解码

[复制链接]

17

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-10-18
在线时间
5 小时
发表于 2014-3-5 15:17:13 | 显示全部楼层 |阅读模式
原子哥,我移植了你例程中的对于GIF部分的代码,可是下到板子里面的,GIF的图片变成了很多的点闪来闪去。
这要怎样解决啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-5 17:05:14 | 显示全部楼层
回复【楼主位】maoxiang:
---------------------------------
仿真,看问题出在哪里
你移植到什么开发板?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

17

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-10-18
在线时间
5 小时
 楼主| 发表于 2014-3-5 18:37:15 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我是移植到众想开发板上
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-5 22:58:07 | 显示全部楼层
回复【3楼】maoxiang:
---------------------------------
额...
这个没听说过,呵呵。
用的什么芯片?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

17

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-10-18
在线时间
5 小时
 楼主| 发表于 2014-3-5 23:17:22 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
stm32f103VE
回复 支持 反对

使用道具 举报

17

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-10-18
在线时间
5 小时
 楼主| 发表于 2014-3-5 23:23:52 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
//画GIF图像的一帧
//gfile:gif文件.
//x0,y0:开始显示的坐标
u8 gif_drawimage(FIL *gfile,gif89a* gif,u16 x0,u16 y0)
{   
u32 readed;
u8 res,temp;    
u16 numcolors;
ImageScreenDescriptor previmg;

u8 Disposal;
int TransIndex;
u8 Introducer;
TransIndex=-1;   
......
原子哥,这个函数中的变量Disposal,我看了这个函数里面,都没有对这个变量进行赋值,可是这段程序里面又要用这个
参数来进行判断,用来做函数的实参。
if(Disposal==2)
gif_clear2bkcolor(x0,y0,gif,previmg); 
gif_dispimage(gfile,gif,x0+gif->gifISD.xoff,y0+gif->gifISD.yoff,TransIndex,Disposal);
局部变量不初始化,不是会随意赋值吗
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-5 23:42:48 | 显示全部楼层
回复【6楼】maoxiang:
---------------------------------
这些应用层的代码,都不要去改了,我都改好了的,你只需要移植底层的代码即可。
我们不是有个PICTURE文件夹么?你只需要实现piclib.h里面规定的一些函数,就可以移植过去了的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-5 23:43:23 | 显示全部楼层
//画图初始化,在画图之前,必须先调用此函数
//指定画点/读点
void piclib_init(void)
{
pic_phy.read_point=LCD_ReadPoint;   //读点函数实现
pic_phy.draw_point=LCD_Fast_DrawPoint; //画点函数实现
pic_phy.fill=LCD_Fill; //填充函数实现
pic_phy.draw_hline=piclib_draw_hline;   //画线函数实现
pic_phy.set_window=LCD_Set_Window;   //开窗函数
pic_phy.fill_prepare=LCD_WriteRAM_Prepare;//开始填充
pic_phy.fill_point=LCD_WriteRAM;   //填充点

picinfo.lcdwidth=lcddev.width; //得到LCD的宽度像素
picinfo.lcdheight=lcddev.height;//得到LCD的高度像素

picinfo.ImgWidth=0; //初始化宽度为0
picinfo.ImgHeight=0;//初始化高度为0
picinfo.Div_Fac=0; //初始化缩放系数为0
picinfo.S_Height=0; //初始化设定的高度为0
picinfo.S_Width=0; //初始化设定的宽度为0
picinfo.S_XOFF=0; //初始化x轴的偏移量为0
picinfo.S_YOFF=0; //初始化y轴的偏移量为0
picinfo.staticx=0; //初始化当前显示到的x坐标为0
picinfo.staticy=0; //初始化当前显示到的y坐标为0
}
就是这些。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

17

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-10-18
在线时间
5 小时
 楼主| 发表于 2014-3-6 10:21:46 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
问题已经解决了,是在画点函数这里出错。改成快速画点就可以显示GIF的图片,可是显示BMP和JPG格式的图片依然要用
我原来的那个函数被调用才可以,可是你那个程序不需要的啊。

//快速描点
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)
{    
LCD_WR_REG(0x2a); 
LCD_WR_Data(x>>8); 
LCD_WR_Data(x&0XFF);  
LCD_WR_REG(0x2b); 
LCD_WR_Data(y>>8); 
LCD_WR_Data(y&0XFF);
LCD_WR_REG(0x2c);
LCD_WR_Data(color);
}

//在指定位置画点
void LCD_DrawPoint(u16 w,u16 h,u16 color)
{
LCD_SetCursor(w,h);//设置光标的位置
LCD_WR_REG(0x2c);
LCD_WR_Data(color);    


//设置光标的位置
void LCD_SetCursor(u16 w,u16 h)
{
if(lcddev.dir==1)//竖屏
{        
LCD_WR_REG(0x2a);     
LCD_WR_Data(h>>8);//起始位置
LCD_WR_Data(h&0x00ff);     
LCD_WR_Data(h>>8);//终点位置
LCD_WR_Data(h&0x00ff);          
             LCD_WR_REG(0x2b);
LCD_WR_Data((271-w)>>8);//起始位置
LCD_WR_Data((271-w)&0x00ff);          
LCD_WR_Data((271-w)>>8);//终点位置
LCD_WR_Data((271-w)&0x00ff);     
}
else//横屏
{
LCD_WR_REG(0x2a);     
LCD_WR_Data(w>>8);//起始位置
LCD_WR_Data(w&0x00ff);     
LCD_WR_Data(w>>8);//终点位置
LCD_WR_Data(w&0x00ff);          
             LCD_WR_REG(0x2b);
LCD_WR_Data((h)>>8);//起始位置
LCD_WR_Data((h)&0x00ff);          
LCD_WR_Data((h)>>8);//终点位置
LCD_WR_Data((h)&0x00ff);     
}
}
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2022-7-7
在线时间
3 小时
发表于 2022-8-19 23:11:22 | 显示全部楼层
楼主,可以发份显示GIF的代码给我吗?(1649122514@qq.com)我用的也ILI9486的屏,显示GIF也是卡的一点一点的闪,改了快速画点函数还是不行,谢谢!
回复 支持 反对

使用道具 举报

1

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2012-11-5
在线时间
50 小时
发表于 2022-12-1 14:59:08 | 显示全部楼层
GIF解码最少需要多大内存,4K内存的单片机能做吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 20:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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