理财秘籍

bitmap优缺点bitmap的作用

Kate 0

各位老铁们,大家好,今天由我来为大家分享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.缩放比:对图片

a股市大崩盘

原始宽高的缩放设置认定为缩放比。

主动设置:

在解析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的作用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关内容