OpenEdv-开源电子网

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

特意发帖校正原子哥BMP图片解码程序对32位BMP图解码的BUG

[复制链接]

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-9-8 21:56:14 | 显示全部楼层 |阅读模式

附件为测试图片:

建议大家先用测试图片对原子哥的原来代码进行测试,电脑上观看此图的时候,交叉是红色的,周围是白色的,如果用原子哥原来的代码解码此图,会导致交叉是黑色的,周围是黄色的。

形成此BUG的主要原因是,解码程序在解码32位BMP图的时候,弄错了图中的颜色顺序导致,另外本人尝试修改该BMP解码,让其在使用显存的情况下,支持透明的BMP图显示,尚未实现,修改alpha后,现象为不管图有没有东西,都不显示。

以下代码是在不支持alpha的基础上,修改了一下32位BMP图的显示顺序,让其正确解码32位BMP,本修改只需要找到对应的这部分进行顺序修改即可,下面是修改好了的代码:

    }else if(color_byte==4)//32位颜色图
    {
     switch (rgb)
     {
      case 1:     
       color=bmpbuf[count]>>3; //B
       break ;   
      case 2:  
       color+=((u16)bmpbuf[count]<<3)&0X07E0;//G
       break;  
      case 3 :
       color+=((u16)bmpbuf[count]<<8)&0XF800;//R  
       break ;   
      case 0 :
       //alphabend=bmpbuf[count];//不读取  ALPHA通道
       break ;       
     } 

未标题-1.bmp
Time?And?Relative?Dimension?In?Space.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-8 22:07:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 07:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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