OpenEdv-开源电子网

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

bmp 图片解码。

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-7-8
在线时间
1 小时
发表于 2014-8-19 21:35:29 | 显示全部楼层 |阅读模式
5金钱
本人就先解码比较简单的,小于3.2寸的,24位图片。但发现有的图片可以解码出,有的不行,考虑的对齐问题,关键是宽度像素点不是4的倍数有的能解码出。 
希望大神帮个忙,已经搞了好半天呢。。


FATFS fs2;
FIL fsrc2;      
UINT br2;

BMP_HEAD_FILE bmphead;
BMP_HEAD_IMF  bmpinf;

void BMP_Init(void)
{
u32 bmp_height,bmp_width;
u16 rollen,rest,rolcont; 
u8 table[1024];
u16 color1,color2,color3,color4;
u16 i,j,z,k;
u16 x,y;
u32 lseek;
z=0;
f_mount(0, &fs2);
f_open(&fsrc2, "/BMP/pp4.bmp", FA_OPEN_EXISTING | FA_READ);
f_read(&fsrc2, &bmphead, 14, &br2);
f_read(&fsrc2, &bmpinf, 40, &br2);
f_close(&fsrc2);
bmp_height=(u32)bmpinf.biHeight;
bmp_width=(u32)bmpinf.biWidth;
y=320-((320-bmp_height)/2);
printf("height= %d\n",bmpinf.biHeight);
printf("width= %d\n",bmpinf.biWidth);
x=(240-bmp_width)/2;
switch(bmpinf.biBitCount)
{
case 24:
if(bmp_width%4)
{
rollen=(bmp_width/4+1)*12;
}
else
{
rollen=bmp_width*3;
}
rolcont=1024/rollen;
rest=rollen-bmp_width*3;
lseek=bmphead.bfOffBits;
lseek=(bmphead.bfOffBits>>16)+(lseek<<16);
f_open(&fsrc2, "/BMP/pp4.bmp", FA_OPEN_EXISTING | FA_READ);
f_lseek(&fsrc2,bmphead.bfOffBits);
for(j=0;j<bmpinf.biHeight;)
{
f_read(&fsrc2, table, rolcont*rollen, &br2);
z=0;
for(k=0;k<rolcont;k++)
{
for(i=0;i<bmp_width;i++)
{
color1=table[z]>>3; // B
color2=table[z+1]>>2;  // G
color3=table[z+2]>>3;  // R
color4=(((u16)color3)<<11)+(((u16)color2)<<5)+(u16)color1;
LCD_DrawPoint_Color(x+i,y,color4);
z=z+3;

z=z+rest;
y--;
j++;
}
}
f_close(&fsrc2);
break;
}
}

最佳答案

查看完整内容[请看2#楼]

楼主,直接参考我们的代码. 16/24/32bit的bmp都可以支持的.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-19 21:35:30 | 显示全部楼层
楼主,直接参考我们的代码.
16/24/32bit的bmp都可以支持的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-7-8
在线时间
1 小时
 楼主| 发表于 2014-8-20 09:07:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------我是参考你的代码的。但是我的为什么就不行呢?你能看看代码么?谢谢了。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 02:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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