OpenEdv-开源电子网

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

stm32f4开发板自带的gif解码没有背景色选择

[复制链接]

339

主题

418

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1632
金钱
1632
注册时间
2016-9-29
在线时间
114 小时
发表于 2016-10-12 09:29:50 | 显示全部楼层 |阅读模式
5金钱
本人菜鸟一枚 请大神帮忙看一下 怎么样修改 能把gif(GIF本身的透明的)图片显示为融入背景色

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

339

主题

418

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1632
金钱
1632
注册时间
2016-9-29
在线时间
114 小时
 楼主| 发表于 2016-10-12 09:29:51 | 显示全部楼层
回复

使用道具 举报

339

主题

418

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1632
金钱
1632
注册时间
2016-9-29
在线时间
114 小时
 楼主| 发表于 2016-10-12 13:47:10 | 显示全部楼层
本帖最后由 zhlmtt 于 2016-10-12 13:49 编辑

源码如下
u8 gif_decode(const u8 *filename,u16 x,u16 y,u16 width,u16 height)
{
        u8 res=0;
        u16 dtime=0;
        gif89a *mygif89a;
        FIL *gfile;
#if GIF_USE_MALLOC==1
        gfile=(FIL*)pic_memalloc(sizeof(FIL));
        if(gfile==NULL)res=PIC_MEM_ERR;
        mygif89a=(gif89a*)pic_memalloc(sizeof(gif89a));
        if(mygif89a==NULL)res=PIC_MEM_ERR;
        mygif89a->lzw=(LZW_INFO*)pic_memalloc(sizeof(LZW_INFO));
        if(mygif89a->lzw==NULL)res=PIC_MEM_ERR;
#else
        gfile=&f_gfile;
        mygif89a=&tgif89a;
        mygif89a->lzw=&tlzw;
#endif

        if(res==0)//OK
        {
                res=f_open(gfile,(TCHAR *)filename,FA_READ);
                if(res==0)
                {
                        if(gif_check_head(gfile))res=PIC_FORMAT_ERR;
                        if(gif_getinfo(gfile,mygif89a))res=PIC_FORMAT_ERR;
                        if(mygif89a->gifLSD.width>width||mygif89a->gifLSD.height>height)res=PIC_SIZE_ERR;
                        else
                        {
                                x=(width-mygif89a->gifLSD.width)/2+x;
                                y=(height-mygif89a->gifLSD.height)/2+y;
                        }
                        gifdecoding=1;
                        while(gifdecoding&&res==0)
                        {         
                                res=gif_drawimage(gfile,mygif89a,x,y);
                                if(mygif89a->gifISD.flag&0x80)gif_recovergctbl(mygif89a);
                                if(mygif89a->delay)dtime=mygif89a->delay;
                                else dtime=10;
                                while(dtime--&&gifdecoding)delay_ms(10);
                                if(res==2)
                                {
                                        res=0;
                                        break;
                                }
                        }
                }
                f_close(gfile);
        }   
#if GIF_USE_MALLOC==1
        pic_memfree(gfile);
        pic_memfree(mygif89a->lzw);
        pic_memfree(mygif89a);
#endif
        return res;
}

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-10-12 20:52:17 | 显示全部楼层
慢慢研究。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

339

主题

418

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1632
金钱
1632
注册时间
2016-9-29
在线时间
114 小时
 楼主| 发表于 2016-10-13 15:41:12 | 显示全部楼层

着急用啊
回复

使用道具 举报

339

主题

418

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1632
金钱
1632
注册时间
2016-9-29
在线时间
114 小时
 楼主| 发表于 2016-10-13 15:50:07 | 显示全部楼层

买了开发板 是用来学习用的 这个自己慢慢研究当然没问题 有些是着急用的 借鉴里面的东西 我比较着急 请原子哥理解 ... ...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-10-14 20:17:51 | 显示全部楼层
zhlmtt 发表于 2016-10-13 15:50
买了开发板 是用来学习用的 这个自己慢慢研究当然没问题 有些是着急用的 借鉴里面的东西 我比较着急 请原 ...

我也没有。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 23:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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