您的位置:首页 > 其它

Bitmap Png jpg的区别

2016-12-12 19:55 113 查看
 知识普及系列:

         图片有两种使用的场景:一种是在硬盘上的存储格式,一个是在内存的展开格式。

一、在内存中的图片

         因为需要知道图片的所有信息,所有在内存中,图片一般是展开的。那以带透明的Bitmap来说。这里有一些概念。

        1.像素点组成:颜色有R(red红色)、G (green绿色)、B (Blue蓝色) 三色组成,再考虑到透明值的问题会有一个A(alpha阿尔法值)。

         2.位深度:你需要用多少Bit来表示一个像素点。如果是位深度是32,则每八位分别表示R,G,B,A

            如下图所示:

            


            如果在内存中完全展开,其所占内存大小为:宽像素点数  X   高像素点数 X 位深度 /  8  ,单位是字节

            Android中的在内存中完全展开就是Bitmap的格式,Bitmap是最原始的保存着所有的信息,(一般不在硬盘上这么保存)

            图片中所指的分辨率与打印扫描有关,一般不关注。

            在日常交流的过程中所指的分辨率一般指的是其宽和高的像素点个数。

二、在硬盘上的图片

         图片如果按照内存那样的方式来进行存储太浪费空间了。举个例子,如果有一张图片全部都是红色,有必要存储每个像素点吗?其只需要记录下其红色和大小就好了,在内存中可以重新还原。一般在传输和存储的过程中都对图片进行压缩。

         1.PNG 是一种无损压缩。并且带有透明度值。压缩的实在有限!

         2.JPG是一种有损压缩,不带透明值(这就是为什么上图的位深度为24了)。在不影响使用的情况下回丢弃一部分信息,肉眼一般区分不出来。

         对同一张Bitmap图片保存为JPG,比保存为PNG小的多,这就是为什么网络上使用最多是JPG格式的图片了

三、图片的显示

         图片从硬盘加载到内存,最终是需要显示给用户来看。手机的屏幕也有分辨率(宽像素点数,高像素点数),举例,如果有个手机分辨率为800X1080,一张图片为1600X2160,全屏显示这种图片,图片不会失真。

         一般用一个控件来显示图片,图片的展示是否失真与控件的大小有关(全填充)。

        在宽高比一致的情况,大的图片在小的控件展示,图片不会失真。小的图片在大的控件展示,图片会失真。

        在宽高比不一致的情况下,如果完全填充满控件,图片一定会扭曲变形。除非,保持其比例,不完全填充。

        在实际的应用过程中,为了展示的效果更好和节约内存,一般都需要提前得出控件的大小,加载图片的时候,将图片处理成与控件的大小一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Bitmap PNG JPG