美文网首页
Bitmap-学习

Bitmap-学习

作者: 没有了遇见 | 来源:发表于2024-02-17 10:05 被阅读0次

1:Bitmap是什么??

说起Bitmap就要搭配着图片这一概念来解释.Bitmap是图片在内存中的表示,图片是Bitmap磁盘持久化存储的文件.Bitmap实质是像素点矩阵组合.

Bitmap是Android系统中的图像处理的最重要类之一
用Bitmap可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。


名词解释:

像素: 这个词,源于英文单词pixel,全称picture element,翻译过来即为图片元素

屏幕分辨率(dpi):分辨率是手机屏幕的像素点总数,一般用屏幕宽的像素点数乘以屏幕高的像素点数。分辨率越大屏幕越细腻,能够显示的细节就越多.
1080x720 分辨率的屏幕表示屏幕高有1080个像素 宽有720个像素

像素密度(dpi):每英寸屏幕像素的数量

安卓的计量单位dp,,主要是是用来标注控件的宽、高。其换算公式:
屏幕的总dp值 = 分辨率/屏幕密度

//获取屏幕密度
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 像素密度(每寸像素:120/160/240/320)

//获取屏幕实际分辨率
WindowManager windowManager = getWindow().getWindowManager();
Point point = new Point();
windowManager.getDefaultDisplay().getRealSize(point);
//屏幕实际宽度(像素个数)
int width = point.x;
//屏幕实际高度(像素个数)
int height = point.y;

2:一张位图所占用的内存大小?

图片长度(px)× 图片宽度(px)× 一个像素点占用的字节数

像素占用字节数和Bitmap内存中存储格式有关Bitmap.Config 枚举类 提供了常用的几个格式.

  • ALPHA_8:表示 8 位 Alpha 位图,即 A=8,表示只存储 Alpha 位,不存储颜色值。一 个像素点占用 1 字节,很明显,它没有颜色,只有透明度。
  • ARGB_4444:表示16位ARGB位图,即A、R、G、B各占4位,一个像素点占4+4+4+4=16 位,2 字节。
  • ARGB_8888:表示32位ARGB位图,即A、R、G、B各占8位,一个像素点占8+8+8+8=32 位,4 字节。
  • RGB_565:表示 16 位 RGB 位图,即 R 占 5 位,G 占 6 位,B 占 5 位,它没有透明度, 一个像素点占 5+6+5=16 位,2 字节。
Bitmap_内存存储格式.png

位深
指的是在对Bitmap进行压缩存储时存储每个像素所用的bit数,主要用于存储

色深
色深指的是每一个像素点用多少bit来存储ARGB值,属于图片自身的一种属性。
总结:
有透明效果用 ARGB_8888 没透明效果用RGB_565 遮罩效果用ALPHA_8

3:图片和Bitmap?

Bitmap是是图片在内存中的表示,图片是Bitmap通过不同算法在磁盘中的持久化存储的文件,一般不同算法生成不同格式的文件,一般以算法名结尾,如PNG,JPEG,WEBP,BMP,GIF.
即,Bitmap是图片解压后在内存中的展示(数据大),图片是Bitmap,通过不同算法在磁盘中的持久化存储.

压缩:
因为Bitmap存在内存中数据较大,所以持久化存储的时候 考虑到节省空间所以需要对图片进行压缩存储,所以产生了满足不同场景需要的压缩算法.

4:图片压缩.

有损压缩和无损压缩

  • 有损压缩
    删除图片中的某些数据,依靠人脑去补充部分颜色.
    优缺点:
    降低了图像加载到内存的大小,但是会影响质量.

  • 无损压缩
    相同颜色只存储一次,重复区域被压缩.
    优缺点:
    本地存储变小但是Bitmap展示到内存中不会被压缩


GIF : Gif是一种基于LZW算法的无损压缩格式,其压缩率一般在50%左右

BMP : BMP是标准图形格式,它是包括Windows在内多种操作系统图像展现的终极形式。
      其本质就是Bitmap对象直接持久化保存的位图文件格式,由于没有进行压缩存储,因此体积非常大
                
PNG : PNG格式本身的设计目的是替代GIF格式,所以它与GIF 有更多相似的地方。PNG格式也属于无损压缩,其位深为32位,
      也就是说它支持所有的颜色类型
      
JPEG : JPEG是一种有损压缩格式,JPEG图片以24位颜色压缩存储单个位图。也就是说,JPEG不支持透明通道。JPEG也不支持多帧动画。
        因为是有损压缩,所以需要注意控制压缩率以免图片质量太差 .(不支持透明度)
        

WEBP : WebP支持有损和无损压缩、支持完整的透明通道、也支持多帧动画,并且没有版权问题,是一种非常理想的图片格式。


总结: 
    JPEG 有损压缩内存中小,牺牲了图片质量
    PNG  无损压缩内存中不变   
    WEBP 压缩比较高,压缩时间长(存储时间长)

5:关键类和方法说明

  • BitmapFactory: Bitmap的工厂类,通过BitmapFactory的静态方法来创建Bitmap对象
  • BitmapFactory.Options : 代表对Bitmap对象的属性设置(配置)
                
 BitmapFactory.Options bm=new   BitmapFactory.Options();    
 BitmapFactory.Options 说明(重要)
        
1:inJustDecodeBounds 是否只扫描轮廓,默认为false 会创建Bitmap  true时不创建Bitmap 
 BitmapFactory.Options对象的outWidth和outHeight属性分别代表Bitmap对象的宽和高, 但是这两个属性在Bitmap对象未创建之前显然默认为0,默认只有在Bitmap对象创建后才能被赋予正确的值。而当inJustDecodeBounds属性为true,虽然不会分配内存创建Bitmap对象,但是会扫描轮廓来给outWidth和outHeight属性赋值, 就相当于绕过了Bitmap对象创建的这一步提前获取到Bitmap对象的宽高值
                       
2:inSample:这个表示Bitmap的采样率,默认为1 必须为2的幂,比如2、4、8...等整数值。2 表示w/2和h/2 大小变为原先的1/4

3:inPreferredConfig:该属性指定Bitmap的色深值,该属性类型为Bitmap.Config值 Bitmap.Config.ARGB_8888
                    
4:isMutable:该属性表示通过decodeXXXX方法创建的Bitmap对象其代表的图片内容是否允许被外部修改,比如利用Canvas重新绘制其内容等。默认为false,即不允许被外部操作修改。
    
    

相关文章

  • Bitmap-详解

    参考资料 目录 Bitmap BitmapFactory Bitmap加载方法 Bitmap | Drawable...

  • 二 Android OpenCV NDK 开发 - 扩展知识 B

    Bitmap-详解 - 简书 https://www.jianshu.com/p/780fb6ca2a3f

  • Bitmap-基础梳理

    压缩 https://juejin.im/post/58bc1f11ac502e006b0957b7 详解 htt...

  • Bitmap-让图片加载更高效

    0. 效果图 1. 基本概念 Bitmap(位图)是Android系统中图像处理最重要的类之一。 Bitmap可以...

  • 学习学习学习

    第三天了,连续三天,早上睁眼开始,看视频,做课件,连续作业,直到晚上十二点才睡觉。吃饭不规律,想起来就吃,感觉不饿...

  • 学习学习学习

    23岁的我,才真正明白,什么是学习,什么是努力,努力和不努力真的不同,就好比同样是一篇稿子,我用一周背下来,有的人...

  • 学习学习学习!

    妈妈总是让我学习,我只能用装当办法。 方法一: 方法二: 方法三: 方法四: ...

  • 学习学习学习

    001.今天看财富自由之路看了第二遍,而且看了一半,算是完成任务很开心。中间有想放弃的念头,坚持看完。眼睛痛,一直...

  • 学习学习学习

    马自达为什么坚持高压缩比自吸

  • 学习!学习!学习!

    学习的痛苦是暂时的 没有学到的痛苦是永恒的 因为学习而特别充实的一天 很踏实 ~~~~ 2015.11.28.阴天...

网友评论

      本文标题:Bitmap-学习

      本文链接:https://www.haomeiwen.com/subject/wzvuadtx.html