图像分辨率和图像大小的计算

一、BMP位图

1.

一个实际例子,选择一个24位深度的225×225位图,

由于24位位图是真彩色,没有颜色表这一样,所以

其文件大小为152.154字节,则

152.154=14+40+(225×3+1)×225

注:因为1个像素用三个字节来表示,所以乘以3;因为位图存储时,Windows规定一个扫描行所占的字节数必须是
4的倍数(即以long为单位),不足的以0填充,225×3+1刚好是4的倍数;14和40是位图文件头和位图信息头的字节大小;

2.
当利用绘图程序将文件保存为256色,即8位深度的位图后,文件大小变为52.378字节,即

52.378 = 14 + 40 + 256 × 4 + (225 + 3)× 225

注:256色位图有颜色表,每个颜色表结构体是4字节,所以颜色表这一项占256*4 个字节;

225+3 刚好凑成4的倍数

3.

从上面的两个例子可知,对于bmp位图,由于存储时无压缩,我们可以从像素总量(比如上面的255*255)以及位图存储格式中,算出一幅位图占用的字节数;

也即是说,如果几幅位图都是 1280*960,并且都是8位深度,那么它们占用的存储大小都是一样的~

(葫芦岛相机拍摄的图片,大小为:14+40+256*4+1280*960字节,约为1.17MB~)

对于从网上随便下载的一幅图片,可能是jpg、png、bmp等多种格式,我们光知道他们像素总数是1280*860,是无法计算出图片大小的~~因为压缩方式、编码等都不一样

4.

我们通常说,一幅图片的分辨率是1280*960,这个其实并不准确~
图像分辨率指图像中存储的信息量,是每英寸图像内有多少个像素点,即:像素每英寸,单位为PPI(Pixels Per Inch)。一般来说,很少用分辨率这个概念来衡量电子图片。
但是,在生活中,图像分辨率是一个被混用到电子图片的概念,原本含义的目的是“密度”决定“打印质量”,后来被混用,或者说错误的用做衡量图像内的像素点数量。

1920*1200是像素总量,不是密度,密度要除以英寸才是,存储在图像头部信息中,用于打印设置。
5.
用浏览器截图工具截取一幅图片,保存在windows画图工具中,假设截取的宽度为1280,高度为960

当我们用不同的格式进行保存(比如8位位图、24位位图、jpg、png等不同格式),最后在电脑上显示的图片尺寸都为:1280*960,而图片的存储大小都不一样~~
我们用不同方式存储时,图片的像素总数是不变的,都为1280*960,只不过每个像素需要的字节数不一样,所以文件大小也不一样~即便是jpg等压缩格式,像素的个数并没有被压缩,只是针对不同的像素点,可能需要的字节数不一样

6.
两个相同尺寸1920*1200的图像,在相同色彩度(如24位真彩)情况下,无压缩的BMP位图的大小是相同的。
而你看到文件大小的不同,是因为图像压缩算法造成的(无压缩文件会非常大,一般为BMP格式),图像压缩是个比较大的课题,分为无损压缩(PNG等)和有损压缩(JPG等),具体压缩算法非常多,各有优劣。
以最常见的JPG为例,其压缩算法是有损的,压缩后的文件大小有几个重要的决定因素:原图尺寸、有损程度、图像中相邻点色差,图像中存在色彩数量等等。

 


原文:https://blog.csdn.net/foreverhuylee/article/details/22798159 

你可能感兴趣的:(软件工具,C++,计算机图像,图像内存,分辨率)