自学图形图像设计,遇到的问题是看不懂求图像每行的字节数,请指教~
我看得书上有如下代码
DWORD CDib::GetDibWidthBytes()
{
byBitCount=m_pBitmapInfoHeader->biBitCount;
LONG nWidth=m_pBitmapInfoHeader->biWidth;
dwWidthBytes = (DWORD)m_pBitmapInfoHeader->biWidth; //8-bits
if(byBitCount == 1) dwWidthBytes = (nWidth + 7) / 8;
else if(byBitCount == 4) dwWidthBytes = (nWidth + 1) / 2;
else if(byBitCount == 24) dwWidthBytes = 3 * nWidth ;
while((dwWidthBytes & 3) != 0)dwWidthBytes++;
return dwWidthBytes;
}
1。为什么不把 if(byBitCount == 8) dwWidthBytes = (((wide * 8)+31)/32*4); 写进去,是一定要分类讨论,还是书上的失误?
2。为什么这些计算都那么复杂,有什么依据或者潜在的规则吗?而且我觉得当byBitCount == 8,横向的像素点的个数不就是横向的byte数吗?
先谢过!
DWORD CDib::GetDibWidthBytes()
{
byBitCount=m_pBitmapInfoHeader->biBitCount;
LONG nWidth=m_pBitmapInfoHeader->biWidth;
dwWidthBytes = (DWORD)m_pBitmapInfoHeader->biWidth; //8-bits
if(byBitCount == 1) dwWidthBytes = (nWidth + 7) / 8;
else if(byBitCount == 4) dwWidthBytes = (nWidth + 1) / 2;
else if(byBitCount == 24) dwWidthBytes = 3 * nWidth ;
while((dwWidthBytes & 3) != 0)dwWidthBytes++;
return dwWidthBytes;
}
1。为什么不把 if(byBitCount == 8) dwWidthBytes = (((wide * 8)+31)/32*4); 写进去,是一定要分类讨论,还是书上的失误?
2。为什么这些计算都那么复杂,有什么依据或者潜在的规则吗?而且我觉得当byBitCount == 8,横向的像素点的个数不就是横向的byte数吗?
先谢过!
...全文
相关推荐
XML 存储图形图像的基本原理.docx
我们可以采用 C 语言编写 DB2 嵌入存储过程,实现了在数据库内存中将文本格式的图片文件到二进制 BLOB 字段之间的转换,并且就性能优化等提出若干建议,该设计思路和程序可以广泛的应用到图像图形数据在
图形图像在计算机中的表示PPT教案.pptx
总的来说,理解和掌握图形图像在计算机中的表示方式,对于进行图像处理、设计工作或理解数字媒体的存储原理至关重要。通过实验和实践,可以更直观地体验这些概念,并应用于日常的电脑操作中。
利用VB内置API函数旋转BMP位图实例
通过实践这个实例,你可以深入理解VB对图形图像的操作,以及API函数的使用,这对于开发涉及图像处理的软件非常有帮助。
launch.rar_图形图像处理_Unix_Linux_
例如,在Unix和Linux系统中,如果你正在编写一个图形图像处理程序,并且需要直接操作内存中的像素数据,那么理解结构体的偏移量就显得尤为重要。
多媒体技术及其应用
在图形图像领域,亮度、色调和饱和度是描述颜色的重要属性。亮度决定了视觉上的明暗,色调则定义了颜色的种类,而饱和度则影响颜色的纯度或深浅。


图形处理/算法
