美文网首页
bitmap简单学习记录

bitmap简单学习记录

作者: 梧叶已秋声 | 来源:发表于2020-05-19 11:56 被阅读0次

    在对RGBYUV有了一定的了解后,来看看Bitmap
    一般设备(例如相机)采集的数据是RGB或者YUV等格式的,那么bitmap又是什么呢?虽然一直在用它,但是真的了解它吗?

    出处:https://baike.baidu.com/item/Bitmap
    位图(Bitmap),又称栅格图(英语:Raster graphics)或点阵图,是使用像素阵列(Pixel-array/Dot-matrix点阵)来表示的图像。
    编码方式:RGB,位图颜色的一种编码方法,用红、绿、蓝三原色的光学强度来表示一种颜色。这是最常见的位图编码方法,可以直接用于屏幕显示。

    出处:Android编程权威指南
    Bitmap是个简单对象,它只存储实际像素数据。也就是说,即使原始照片已压缩过,但存入Bitmap对象时,文件并不会同样压缩。因此,一张1600万像素24位的相机照片(存为JPG格式大约5MB),一旦载入Bitmap
    对象,就会立即膨胀至48MB!

    也就是说,通常我们的图片数据(如jpgjpg本身就是代表压缩方式)都是压缩过的,一旦转换成bitmap是会放大的。这也就解释了,为什么使用bitmap过程中经常容易造成内存泄漏之类的问题。

    大致意思是bitmap是一种图像,其常见编码方式是RGB。但是并不能理解到底何为bitmap
    找了几本计算机图形学的书籍,想了解何为bitmap

    以下内容出自《计算机图形学(OpenGL版)第3版》和《计算机图形学 第4版》。

    忽略掉《计算机图形学 第4版》中关于计算机图形硬件这一章的大部分描述(因为大部分无法理解),来看计算机图形软件这一章。

    计算机图形学 第4版
    这段话简单来说,就是图形软件有2种:1.如windows自带的画图、PS、CAD等画图应用软件,不需要有代码基础就能使用的专用图形软件。2.GL、OpenGL等通用图形软件,需程序员通过编写代码从而实现图形显示在输出设备上。 计算机图形学(OpenGL版)第3版
    计算机绘制的图形是由输出图元组成,来看输出图元为光栅图像的情况。
    假设计算机绘制出了一个如下所示的光栅图形(一个棋子),如下所示。
    计算机图形学(OpenGL版)第3版
    这个光栅图像,由多个单元(每个单元被称为像素,像素即为图像元素的简称)组成。
    计算机图形学(OpenGL版)第3版
    光栅图像以数组的形式存储在计算机中,例如18x19的矩形数组存贮了一个光栅图像,那么这个数组即为像素图,或者位图
    计算机图形学(OpenGL版)第3版
    image.png
    image.png

    这幅图,左边是光栅图像,右边是部分像素图的值,此图为灰度图像,因此存储是数值是灰度。左上的那个像素对应的数组中的数值就是2
    一般大多数情况下我们使用的图片存储是RGB数值,有时候也会带上alpha通道的数据。
    假设使用Bitmap.Config.ARGB_8888。ARGB_8888表示每个像素用32比特位表示,占4个字节,由4个8位组成,ARGB分量都是8位。
    那么一个像素对应的数值(数值是虚构的) 应如下所示。

    A R G B
    11111111 00001111 00011111 00111111

    以上涉及到的概念有:光栅图像,像素,位图,灰度图像,ARGB。
    到这里,对于bitmap的概念应该有了一定的理解。后续的问题就是使用中如何避免OOM。基本上思路都是压缩处理后再使用。

    Android 性能优化(五)之细说 Bitmap
    BitmapFactory获取Bitmap图片以及解决OOM异常
    Bitmap与OOM
    Android 之 Bitmap
    浅谈图片加载的三级缓存

    相关文章

      网友评论

          本文标题:bitmap简单学习记录

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