c语言bmp对齐问题,关于BMP图形的问题求解

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

测试程序如下:

#include

#include

int main(void)

{

int bfOffBits;//位图偏移量

int biwidth,biheight;//位图的宽度和高度

int bibitcount;//每个像素所需位数

int lineByte;//每行所占字节数

int count;

unsigned char *pBmpBuf;//指针指向新开辟的BUFFER读取数据存放地

BITMAPFILEHEADER fileHeader;//创建BIMAPFILEHEADER类型

BITMAPINFOHEADER infoHeader;//创建BITMAPINFOHEADER类型

FILE *fp=fopen("C:\\Users\\XIONGPC\\Desktop\\003.bmp","r");//打开文件BMP格式

fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,fp);//读取 BMP文件头

fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,fp);//读取BMP位图信息头,同时FP指针偏移

bfOffBits=fileHeader.bfOffBits;//输出偏移量

printf("位图偏移量为:%d,",bfOffBits);

bibitcount=infoHeader.biBitCount;//每个像素所需位数

biwidth=infoHeader.biWidth;//图像宽

biheight=infoHeader.biHeight;//图像高度

printf("图像宽度为:%d,高度为:%d\n",biwidth,biheight);

lineByte=biwidth/8;//图像每行所占字节数

pBmpBuf=new unsigned char[lineByte*biheight];//开辟空间并用PBMPBUF指针指向首地址

fseek(fp,62,SEEK_SET);//跳转至位图数据 ,当前FP指针位置

fread(pBmpBuf,sizeof(char),lineByte*biheight,fp);

for(int i=0;i

{

for(int j=0;j

{

unsigned short int temp=*(pBmpBuf+i*lineByte+j*2);//定义无符号短整型接受BYTE单位数据

count++;

printf("%u ",temp);//输出每字节数据以无符号十进制输出

if(count==(lineByte/2))//内层FOR跳转判断条件

{

printf("Hend\n");

count=0;//行数清零

}

}

}

fclose(fp);

}

然后用windows画图画出一个16X16像素的BMP位图1像素1位;

图形左下角2个黑色像素,右上角2个黑色像素;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值