bmp文件大小到底可以怎么求啊
我现在这里有一个512512的8位bmp文件,直接看属性它的大小是262,624字节,但是如果我自己算,就是BITMAPFILEHEADER,BITMAPINFOHEAD...
我现在这里有一个512 512的8位bmp文件,直接看属性它的大小是262,624 字节,但是如果我自己算,就是BITMAPFILEHEADER,BITMAPINFOHEADER这两个是54,然后颜色板是4*256=1024,然后图像信息是,512*512=262144,
所以总共是54+1024+262144=263,222个字节,比属性看到的大了。
求教啊,现在我做题目是要读取bmp文件,现在这个问题就困扰我了。谢谢大侠们 展开
所以总共是54+1024+262144=263,222个字节,比属性看到的大了。
求教啊,现在我做题目是要读取bmp文件,现在这个问题就困扰我了。谢谢大侠们 展开
展开全部
关于BMP大小的计算方法:
举个具体的例子:
这里有这样一个BMP文件(右键点击图片,然后在摘要里可以得到以下数据)宽度256像素,高度256像素,位深度 8。位深度就代表是2的8次方=256色位图,那么文件大小就是14+40(这两个大小固定)+256×256×1+4×256=66,614字节。第三个加数意思是由于图片是256色=2的8次方,8位一个字节,一个像素大小就是一个字节。因此,256×256个像素正好是256×256×1个字节,最后一个加数代表调色板大小,因为要用到256种颜色,一个调色板元素大小为4个字节,256个就是1024个字节。
再举一个24位真彩的图片说明:宽度4000像素,高度3000像素,位深度24。代表这是24位真彩图片。大小计算:14+40+4000×3000×3=36,000,054字节。
举个具体的例子:
这里有这样一个BMP文件(右键点击图片,然后在摘要里可以得到以下数据)宽度256像素,高度256像素,位深度 8。位深度就代表是2的8次方=256色位图,那么文件大小就是14+40(这两个大小固定)+256×256×1+4×256=66,614字节。第三个加数意思是由于图片是256色=2的8次方,8位一个字节,一个像素大小就是一个字节。因此,256×256个像素正好是256×256×1个字节,最后一个加数代表调色板大小,因为要用到256种颜色,一个调色板元素大小为4个字节,256个就是1024个字节。
再举一个24位真彩的图片说明:宽度4000像素,高度3000像素,位深度24。代表这是24位真彩图片。大小计算:14+40+4000×3000×3=36,000,054字节。
展开全部
根据颜色深度的不同,图像上的一个像素可以用一个或者多个字节表示,它由n/8所确定(n是位深度,1字节包含8个数据位)。图片浏览器等基于字节的ASCII值计算像素的颜色,然后从调色板中读出相应的值。n位2n种颜色的位图近似字节数可以用下面的公式计算:BMP文件大小约等于 54+4*2的n次方+(w*h*n)/8,其中高度和宽度都是像素数。需要注意的是上面公式中的54是位图文件的文件头,是彩色调色板的大小。另外需要注意的是这是一个近似值,对于n位的位图图像来说,尽管可能有最多2n中颜色,一个特定的图像可能并不会使用这些所有的颜色。由于彩色调色板仅仅定义了图像所用的颜色,所以实际的彩色调色板较小些。由于存储算法本身决定的因素,根据几个图像参数的不同计算出的大小与实际的文件大小将会有一些细小的差别。
追问
谢谢,确实是调色板的问题,我直接看那个bfOffBits是为478的.所以又有一个问题请教一下,因为这是512 512的bmp 8位图,长度是4的倍数,所以存储的时候不应该存在比特填充的问题.然后这个图像实际数据应该是512*512=262144,而计算出来的大小却是262624-478=262146,这少了的2又是哪里去了啊?而且我还试着直接把这实际图像数据(理论上是262144字节这一段)这一段读出来,在写到另外一个一个新文件中,而这个新文件属性显示为262332.求助啊
参考资料: 百度百科
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |