Bitmap RGB24 4字节对齐

发布时间:2017-7-1 11:15:27编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Bitmap RGB24 4字节对齐",主要涉及到Bitmap RGB24 4字节对齐方面的内容,对于Bitmap RGB24 4字节对齐感兴趣的同学可以参考一下。

Bitmap RGB24 4字节对齐

本文中说的图片都是无压缩的彩色Bitmap图片。

最近在一个项目中有一个场景是需要将RGB32或RGB24的Bitmap转换成为RGB565的Bitmap,在RGB32转RGB565的过程中没有遇到什么问题:

    pixel565[0] = color[0] >> 3;// R    pixel565[1] = color[1] >> 2;// G    pixel565[2] = color[2] >> 3;// B

但是在将RGB565转换成为RGB24的时候却出现问题了,高宽均100p的图片,用绘图程序绘制出来的大小是374,而我的却是300(图片数据)+54(头部信息)的大小。不明白为何多了20个字节的数据。后来查阅资料后发现是Bitmap的特性。

BMP图像数据,每一行的大小必须是4的倍数,如果不是用0填充,即4字节对齐

所以加入了行对齐的操作:

    int count = 0;    int alignNum = 4 - (pixelMat.cols % 4);    int alignData = 0;    MatConstIterator_<Vec3b> pixel, colorend;    for(pixel = pixelMat.begin<Vec3b>(), colorend = pixelMat.end<Vec3b>();pixel != colorend;++pixel)    {        outFile.write((char*) &(*pixel)[0], 1);        outFile.write((char*) &(*pixel)[1], 1);        outFile.write((char*) &(*pixel)[2], 1);        if(++count % pixelMat.cols == 0)        {            // 4 bytes align            outFile.write((char *) &alignData, alignNum);        }    }

由此联想,在读取或存储Bitmap图片时需要关注图片一行数据的像素值所占的空间是否进行4字节对齐!

目前项目中处理的流程需要考虑对齐的有:

RGB888->RGB565 读与写

RGB565->RGB888 读与写


上一篇:Oracle 12c心得
下一篇:单点登录原理与简单实现

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款