bitmap优缺点bitmap的作用
各位老铁们,大家好,今天由我来为大家分享bitmap优缺点,以及bitmap的作用的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注
收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录
PNG和BMP格式的图片各有什么优缺点JPG、GIF、PNG和BMP格式的图片各有什么优点和缺点Bitmap的内存占用和Bitmap加载优化矢量图与位图的区别,各自的优缺点……PNG和BMP格式的图片各有什么优缺点BMP:优点(无损压缩,图质最好),缺点(文件太大,不利于网络传输)
GIF:优点(动画存储格式),缺点(最多256色,画质差)
PNG:优点(可保存透明背景的图片),缺点(画质中等)
JPG:优点(文件小,利于网络传输),缺点(画质损失)
BMP
BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。
GIF
GIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右,它不属于任何应用程序。目前几乎所有相关软件都支持它,公共领域有大量的软件在使用GIF图像文件。GIF图像文件的数据是经过压缩的,而且是采用了可变长度等压缩算法。GIF格式的另一个特点是其在一个GIF文件中可以存多幅彩色图像,如果把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就可构成一种最简单的动画。
PNG
PNG图像文件存储格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。
JPG
JPG全名是JPEG。JPEG图片以24位颜色存储单个位图。JPEG是与平台无关的格式,支持最高级别的压缩,不过,这种压缩是有损耗的。渐近式JPEG文件支持交错。
JPG、GIF、PNG和BMP格式的图片各有什么优点和缺点JPG、GIF、PNG和BMP有以下优缺点:
1、优点。
JPG:JPEG图片格式的设计目标,是在不影响人类可分辨的图片质量的前提下,尽可能的压缩文件大小。这意味着JPEG去掉了一部分图片的原始信息,也即是进行了有损压缩。JPEG的图片的优点,是采用了直接色,得益于更丰富的色彩,JPEG非常适合用来存储照片,用来表达更生动的图像效果,比如颜色渐变。
GIF:GIF是无损的,采用GIF格式保存图片不会降低图片质量。但得益于数据的压缩,GIF格式的图片,其文件大小要远小于BMP格式的图片。文件小,是GIF格式的优点,同时,GIF格式还具有支持动画以及透明的优点。
PNG:PNG是一种比较新的图片格式,PNG-8是非常好的GIF格式替代者,在可能的情况下,应该尽可能的使用PNG-8而不是GIF,因为在相同的图片效果下,PNG-8具有更小的文件体积。
BMP:这是一种比较老的图片格式。BMP是无损的,但同时这种图片格式几乎没有对数据进行压缩,所以BMP格式的图片通常具有较大的文件大小。虽然同时支持索引色和直接色是一个优点
2、缺点
JPG:与GIF相比,JPEG不适合用来存储企业Logo、线框类的图。因为有损压缩会导致图片模糊,而直接色的选用,又会导致图片文件较GIF更大。
GIF:GIF格式仅支持8bit的索引色,即在整个图片中,只能存在256种不同的颜色。
PNG:PNG-8本身也是支持动画的,只是浏览器支持得不好,不像GIF那样受到广泛的支持。
BMP:太大的文件格式格式导致它几乎没有用武之地,现在除了在Windows操作系统中还比较常见之外,几乎看不到它。
扩展资料:
图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种。
有损压缩。指在压缩文件大小的过程中,损失了一部分图片的信息,也即降低了图片的质量,并且这种损失是不可逆的,不可能从有一个有损压缩过的图片中恢复出全来的图片。常见的有损压缩手段,是按照一定的算法将临近的像素点进行合并。
无损压缩。只在压缩文件大小的过程中,图片的质量没有任何损耗。任何时候都可以从无损压缩过的图片中恢复出原来的信息。
Bitmap的内存占用和Bitmap加载优化内存占用
首先要清楚Bitmap的文件大小肯定不是实际的内存加载大小。因为文件只是存储的信息,加载到内存中显示出来时还需要经过转换。
获取运行的时的内存占用:
针对Bitmap位图对象,Android的系统框架中的graphics包下的Bitmap类。有bitmap.getByteCount()方法获取内存大小,单位字节(byte)
其实本质上Bitmap的内存占用计算非常简单:
基本公式:总内存=宽×高×色彩空间
但是在实际运行中不是这么简单,公式的每个参数都会有被不同因素影响。
影响内存大小的三要素
1.图片宽高:这个不用解释
2.色彩空间:即Bitmap.Config枚举:ARGB_8888:总共32位(4byte),分别对应4个数值,数值单位为8bit位=1byte字节,分别描述透明度(1个)+RGB通道(3个)。每个字节数值范围0-255。作为Bitmap配置色彩空间的默认值。BitmapFactory加载时默认。
publicBitmap.ConfiginPreferredConfig=Bitmap.Config.ARGB_8888
RGB_565
总共16位(2byte),分别对应3个数值,5位(红)+6位(绿)+5位(蓝)分别描述RGB通道。Glide加载时默认使用,DecodeFormat类
publicstaticfinalDecodeFormatDEFAULT=PREFER_RGB_565
可以看到,RGB_565只需要ARGB_8888的一半大小,代价是没有透明度描述。
3.缩放比:对图片
原始宽高的缩放设置认定为缩放比。主动设置:
在解析Bitmap时,有个可选的Options对象,其中inSampleSize参数可以影响缩放比的结果。当使用该参数值时要求大于1且是2的倍数,比如在inSampleSize=2时,缩放比被缩小2倍(该功能只有缩小没有放大的可能),即“缩放比=原始缩放比×(1/2)”。对内存结果的影响是缩小4倍,因为宽/高都被缩小2倍。该值默认不生效,需要手动设置。
被动设置:
在系统中主要由,具体运行设备dpi的和图片文件存储的drawable文件dpi层级决定。首先要引出屏幕密度概念。这是Android为应对众多的不同的屏幕分辨率色设备提出的概念和单位。
drawable文件的dpi层级:在Drawable系列文件中保存的Bitmap位图文件。根据Android开发的规范,Drawable的系列文件中的修饰符后命名是有意义的,声明了这个文件所属的Dpi(屏幕密度)层级。文件众多也对应了众多的Android设备屏幕密度。
设备的dpi层级:参考material.io/devices/可以了解。
设备和drawable文件的dpi缩放比计算:
比如drawable-xhdpi(320=2*160=2*mdpi)下的bitmap被加载到xxxhdpi(640=4*160=4*mdpi)的Pixel-XL中。
dpi缩放比=设备dpi/drawable的dpi,所以上面的,dpi缩放比=640/320=2。
实际意义就是在高分辨率的xxxhdpi设备中,drawable-xhdpi文件需要放大2倍,即宽高各放大2倍来适应高密度设备。(假设没有缩放就会图小控件大)。需要指出的是如果Bitmap文件保存在drawable没有后缀的文件中,系统会使用drawable的dpi默认值就是160;
最终公式
基于以上认识,丰富上文的基本公式,可以的得到最终的计算Bitmap内存公式
最终公式:总内存=(原始宽×缩放比)×(原始高×缩放比)×色彩空间
举个例子:
原图:1000宽X447高,位于drawable-xxhdpi(480dpi=3*160dpi)文件包,设备Pixel-XL(560dpi=3.5*160dpi)。主动设置inSampleSize=2。使用默认Bitmap.Config=ARGB_8888
缩放比=主动设置×被动设置=1/2×(560/480)=0.5×1.166=0.5833
色彩空间=ARGB_8888=32bit=4byte
原始大小=1000×447
内存占用=(原始宽×缩放比)×(原始高×缩放比)×色彩空间
=1000×0.5833×447×0.5833×4
=583×260×4
=606320byte
≈0.578MB
启示
理解Bitmap的最终内存占用计算原理和内存占用各个参数,我们对Bitmap的处理时就有具体的目标。比如常见的优化Bitmap加载过程,其实就是对Bitmap加载时的各个变量参数设置修改。常见的Bitmap优化:
修改缩放比:目标是修改最终图片加载的宽高,进而优化内存占用。具体就是设置inSampleSize值,如在适当的View上缩放显示适合的bitmap,实现bitmap的高效加载(Glide图片框架就是这样,让显示组件View的宽高的参与缩放比计算)。
修改色彩空间:在明确的不需要透明度的情况,使用RGB_565替换ARGB_8888,可以直接达到内存缩小一半的功效。缺点就是有限定条件。(从网络上的博文描述,不推荐使用ARGB_4444替换,因为这样的图片质量太差)
转自:https://juejin.im/entry/5acf2260518825558359a17a
矢量图与位图的区别,各自的优缺点……一、指代不同
1、矢量图:也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。
2、位图:是由称作像素(图片元素)的单个点组成的。
二、特点不同
1、矢量图:矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。
2、位图:点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增大单个像素,从而使线条和形状显得参差不齐。
三、优缺点不同
1、矢量图:根据几何特性来绘制图形,矢量可以是一个点或一条线,矢量图只能靠软件生成,文件占用内在空间较小,因为这种类型的图像文件包含独立的分离图像,可以自由无限制的重新组合。
2、位图:以表现色彩的变化和颜色的细微过渡,产生逼真的效果,缺点是在保存时需要记录每一个像素的位置
和颜色值,占用较大的存储空间。参考资料来源:百度百科-矢量图
参考资料来源:百度百科-位图
关于bitmap优缺点和bitmap的作用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。