高手请进!关于用C语言读取24位BMP图的问题

little_0ne little_0ne 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
是这样的,我想把一张24位的bmp的像素分别存到3个一维数组R[ ],G[ ],B[ ]里,但是输出某一行的R,G,B后发现有错位,后来百度了一下,原因是BMP存放时遵循了对齐原则,因为长度不是4的倍数所以进行了比特填充,而我没有注意到这个问题,错把一些填充位也读到了RGB数组里,导致了错位。搞了一天都不知道怎么跳过填充位,求高手帮忙解答。
现在已经得到了该位图数据的宽度和高度:bmpWidth与bmpHeight
这个是小弟的代码,求帮忙
void separate(unsigned char* imgBuf, int* R,int* G,int* B,int lineByte) //imgBuf是读取图像数据的指针, lineByte是每行像素所占字节数
{
int i, j;
//int k = 0;
for (i = 0; i < bmpHeight; i++)
{
for (j = 0; j < bmpWidth; j++)
{
R[i*bmpWidth + j] = *(imgBuf + i*lineByte + j * 3 + 2);
G[i*bmpWidth + j] = *(imgBuf + i*lineByte + j * 3 + 1);
B[i*bmpWidth + j] = *(imgBuf + i*lineByte + j * 3 + 0);
//k++;
}
}
//printf("\nthe value of k is %d\n", k);
}
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
little_0ne
其它技术问题 3,881 成员 9,044 内容