当前位置:阳光沙滩 >Android > 查看文章
阿里云优惠码

1.图片大小的计算
我们每天都使用电脑,每天都查看图片,但是,是否知道图片在硬盘中是怎么储存的呢?它的大小又是怎么计算的呢?

那么接下来,就会对这些问题进行一个解答吧,嘻嘻!希望我没说错吧!

我们都知道,计算机的机器语言由0和1组成。通过这两个数组的不同个数的排列与组合而成来表达特定的信息。
1、图片在计算机中的表示形式:
a)位图的形式(bitmap)
b)矢量图形(矢量图形的保存是以公式的形式保存的,放大不会失真)

2、像素,可以理解为一个小格子。比如说我的屏幕的分辨率是:1366*768,也就是宽有1366个小格子,而竖下来有768个小格子。那么一共有:1049088个小格子。

当我们放大,放大,再放大。

%e5%9b%be%e7%89%8716

图片画得很难看,嘻嘻!不过呢,解释清楚就OK。假设,上面我们看到的格子,一个格子就表示一个像素点。并且用0表示白色,1表示黑色。这样的话,左边显示的图片,就相当于用右边的表示。

当然,在现在的图片中,一个格子表示的颜色有很多种,用1或者0 是不够表示的。那怎么办呢?当然是用多个数字表示啦,因些呢也就有不同位数的图片。比如说有16色位图,256色位图。等等…这些呢都表示一个像素点的颜色种类。

下面,开始学习这个图片大小的计算了:
先打开这个系统自带的画图工具,菜单中打开,或者(WIN+R)输入mspaint就可以打开了!
点击调整大小,然后重新设置大小如图年示:

%e5%9b%be%e7%89%8723

那么,我们就可以得到了一张分辨率为100*100的图片了,那它的大小怎么计算呢?那还得看保存的格式。
好,我随便在上面画点东西!

然后保存起来!

%e5%9b%be%e7%89%8733

我们可以看到,这个保存类型里头有这么多种。我先把它保存为第一种的单色位图吧。

%e5%9b%be%e7%89%8743

上面图片中的这个大小1662字节是怎么来的呢?
是这样计算的,我保存的是单色位图,也就是用一个0或者1来表示一个颜色。那么这里面总共有100*100=10000个小格子。在计算 机中:8个位(0或者1表示一个位bit)是一个字节。这里有1和0的总数为10000个,那么我们用10000/8就可以得到这个字节数了。
1000/8=1250Byte,那为什么是1662呢?因为呀,这个图片还保存了,图片的格式,时间,作者等信息。

那接下来,再把图片保存为16色位图,也就是每一个小格子可以有16种颜色。

大小如下:

%e5%9b%be%e7%89%8753

一个格子表示16种颜色。只有0和1两个数字,要表示出16种颜色。也就是2的4次方。也就是说需要4位来表示一个格子。这样的话,一个格子就4个bit。2个格子1个Byte(字节)一共有10000个格子。那么除以2就可以得到这个图片的大小了。
10000/2 =5000Byte,这样就可以得出了这个图片的大小。

%e5%9b%be%e7%89%8762

我再计算一下这个256色位图吧!原理一样的!

%e5%9b%be%e7%89%8771

表示256种颜色,也就是2的8次方,需要8个bit表示一个小格子。刚好是一个小格子就一个byte。所以呢。这里10000个小格子的话,刚好是1000byte,人为地认为是1KB,但计算机是按1024算的。
我们看看图片的大小吧:

%e5%9b%be%e7%89%8781

好啦,到这里就跟大家说完这个图片的大小计算了,其他附加的信息也要算的话,那就根据各软件的不同了。基本的大小是这样算的,知道就OK!仅作了解即可,至于矩阵那些,可能很多人都没学,这里不再延伸,或者学了也忘记得差不多了。这是大学的高等代数课程。说实话,我也忘记了。有需要就去查找资料,只记得曾经拥有过。另外,在安卓开发中,已经封装好了,嘻嘻!不需要你进行矩阵的运算。

本文链接:http://blog.sunofbeaches.com/archives/374 转载请注明出处.
如果喜欢:点此订阅本站
7K
为您推荐
各种观点