android 图片格式,常见图片格式详解

article/2025/8/28 8:27:35

做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章总结下。虽然一开始并不想讲很理论的东西,但写完后发现几乎全是理论,细想一下关于图片格式的知识本身就是理论的东西,囧~~ 那就力求用最简单的方式将这些“理论”讲清楚吧。

常见的图片格式有bmp, jpg(jpeg), png, gif, webp等。图像基本数据结构

要讲图片格式还先得从图像的基本数据结构说起。在计算机中, 图像是由一个个像素点组成,像素点就是颜色点,而颜色最简单的方式就是用RGB或RGBA表示, 如图所示

68805914_1

(图1)

68805914_2

(图2)

如果有A通道就表明这个图像可以有透明效果。

R,G,B每个分量一般是用一个字节(8位)来表示,所以图(1)中每个像素大小就是3*8=24位图, 而图(2)中每个像素大小是4*8=32位。

这里有三点需要说明:一、图像y方向正立或倒立图像是二维数据,数据在内存中只能一维存储,二维转一维有不同的对应方式。比较常见的只有两种方式: 按像素“行排列”从上往下或者从下往上。

68805914_3

如图所示的图像有9个像素点,如果从上往下排列成一维数据是(123456789), 如果是从下往上排列则为(789456123)。 只所以会有这种区别是因为,前一种是以计算机图形学的屏幕坐标系为参考(右上为原点,y轴向下 ),而另后一种是以标准的数学坐标系为参考(右下为原点,y轴向上)。这两个坐标系只是y值不一样,互相转换的公式为:

y2 = height-1-y1

y1,y2分别为像素在两个坐标系中的y坐标,height为图像的高度。

不过好像只有bmp图片格式以及windows下的GDI,GDI+是从下往上排列,其它比如DirectX,OpenGL,Cocoa(NSImage, UIImage),OpenCV等都是从上往下排列。二、RGB排列顺序

不同图形库中每个像素点中RGBA的排序顺序可能不一样。上面说过像素一般会有RGB,或RGBA四个分量,那么在内存中RGB的排列就有6种情况,如下:

RGBA的排列有24种情况,这里就不全部列出来了。不过一般只会有RGB,BGR, RGBA, RGBA, BGRA这几种排列据。 绝大多数图形库或环境是BGR/BGRA排列,cocoa中的NSImage或UIImage是RGBA排列。三、像素32位对齐

如果是RGB24位图,会存在一个32位对齐的问题——

在x86体系下,cpu一次处理32整数倍的数据会更快,图像处理中经常会按行为单位来处理像素。24位图,宽度不是4的倍数时,其行字节数将不是32整数倍。这时可以采取在行尾添加冗余数据的方式,使其行字节数为32的倍数。

比如,如果图像宽为5像素,不做32位对齐的话,其行字节数为24*5=120,120不是32的倍数。是32整数倍并且刚好比120大的数是128,也就只需要在其行尾添加1字节(8位)的冗余数据即可。(一个以空间换时间的例子)

有个公式可以轻松计算出32位对齐后每行应该占的字节数

byteNum = ((width * 24 + 31) & ~31)>>3;

注意结果是字节数,如果想知道位数,还得x8图片格式的必要性

如果将图像原始格式直接存储到文件中将会非常大,比如一个5000*5000 24位图,所占文件大小为5000*5000*3字节=71.5MB, 其大小非常可观。

如果用zip或rar之类的通用算法来压缩像素数据,得到的压缩比例通常不会太高,因为这些压缩算法没有针对图像数据结构进行特殊处理。

于是就有了jpeg,png等格式,同样是图像压缩算法jpeg和png也有不同的适用场景,具体在下文再阐述。

68805914_4

所以可以总结如下: jpeg,png文件之于图像,就相当于zip,rar格式之于普通文件(用zip,rar格式对普通文件进行压缩)。BMP格式

bmp格式没有压缩像素格式,存储在文件中时先有文件头、再图像头、后面就都是像素数据了,上下颠倒存储。

用windows自带的mspaint工具保存bmp格式时,可以发现有四种bmp可供选择:

单色: 一个像素只占一位,要么是0,要么是1,所以只能存储黑白信息

16色位图: 一个像素4位,有16种颜色可选

256色位图: 一个像素8位,有256种颜色可选

24位位图: 就是图(1)所示的位图,颜色可有2^24种可选,对于人眼来说完全足够了。

这里为了简单起见,只详细讨论最常见的24位图的bmp格式。

现在来看其文件头和图片格式头的结构:

文件头信息

字段大小(字节)描述

bfType2一定为19778,其转化为十六进制为0x4d42,对应的字符串为BM

bfSize4文件大小

bfReserved12一般为0

bfReserved22一般为0

bfOffBits4从文件开始处到像素数据的


http://chatgpt.dhexx.cn/article/C4vKLx0L.shtml

相关文章

Qt之生成png/jpg/bmp格式图片

Qt之生成png/jpg/bmp格式图片 一、问题描述二、显示效果三、核心代码示例 一、问题描述 有时候需要把Qt绘制的一些图形保存为png/jpg/bmp格式的图片,下面就根据自己写的一个简单的测试程序来讲解一下Qt中保存图片的方法。本文主要讲解使用Qpainter和QImage组合使用…

MFC详解显示BMP格式图片

本文主要是讲述《数字图像处理》系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C和MFC显示BMP格式,主要结合自己的《数字图像处理》课程和以前的项目叙述讲解. 一.BMP图片格式定义 BMP文件格式是Windows操作系统推荐和支持的标准图像文件格式,是一种将内存或显示…

bmp格式说明

bmp24位位图格式 创建bmp24位位图格式的图片 打开Windows系统自带的画图软件,如下: 点击“文件 > 另存为”,在弹出的界面中有4种bmp格式可以选择,如下: 不知道bmp格式是不是只有上面的4种,还是有更多…

如何批量将 bmp 格式图片转换为 png 格式

概要:bmp 格式是纹的操作系统当中非常常见的一种图片格式,这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,所以导致了它存在一个很大的缺点,那就是占用磁盘空间过大,那么我们怎么将 bmp 格式的图片转…

将BMP 格式图片转换为 JPEG 格式【c语言】

源码链接: https://blog.csdn.net/qq_44394952/article/details/122587475?spm1001.2014.3001.5502. 一、任务及目标 利用c语言,通过将 RGB 信息转换为 YCrCb 信息、离散余弦变化、量化和 z 型编码,再进行游程编码和霍夫曼编码,最后进行尾…

如何批量将 bmp 格式图片转换转换为 jpg

概要:png 和 jpg 这两种格式的图片相信大家都非常熟悉,但是 bmp 格式的图片可能大家接触得并没有那么多,bmp 是 Windows 操作系统中的标准图像文件格式,能够被多种 Windows 应用程序所支持,因此格式的图片在 Windows 操…

bmp格式图的解析

文章目录 前言 一、bmp格式图的特点 二、bmp格式图的解析 总结 前言 在图像处理中经常会遇到BMP格式图的解析问题,本文简单介绍了bmp格式图的解析方式,并附上相应的C代码。 一、bmp格式图的特点 bmp图通常由图片的头文件信息和像素数据组成&#xff0c…

R语言与多元线性回归分析计算实例

6.3.7 计算实例 例 6.9 某大型牙膏制造企业为了更好地拓展产品市场,有效地管理库存,公司董事会要求销售部门根据市场调查,找出公司生产的牙膏销售量与销售价格,广告投入等之间的关系,从而预测出在不同价格和广告费用下…

多元线性回归检验

多元线性回归模型通常用来研究一个应变量依赖多个自变量的变化关系,如果二者的以来关系可以用线性形式来刻画,则可以建立多元线性模型来进行分析。 1.t检验 t检验是对单个变量系数的显著性检验,一般看p值; 如果p值小于0.05表示该…

[DataAnalysis]多元线性回归深入浅出-案例+模型假设+参数估计方法+模型评判方法+变量选择+多重共线性问题

一、案例介绍 1、目的:利用上市公司当年的公开财务指标预测来年盈利情况最重要的投资人决策依据。 2、数据来源:随机抽取深市和沪市2002和2003年的500个上市公司样本预测来年的净资产收益率。 3、解释变量包括:资产周转率、当年净资产收益…

基于spss的多元回归分析模型

还是数学建模中的一个小问题,具体概念分析在百度上的大佬说的已经足够详细,在此不再赘述。 链接: 多元回归分析. 我主要根据实例讲解如何通过spss进行建模,并进行模型参数的分析和验证。 打开spss(如果遇到打不开的情况&#x…

多元线性回归分析预测法概述

在市场的经济活动中,经常会遇到某一市场现象的发展和变化取决于几个影响因素的情况,也就是一个因变量和几个自变量有依存关系的情况。而且有时几个影响因素主次难以区分,或者有的因素虽属次要,但也不能略去其作用。例如&#xff0…

用R进行多元线性回归分析建模

概念:多元回归分析预测法,是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法。当自变量与因变量之间存在线性关系时,称为多元线性回归分析。 下面我就举几个例子来说明一下 例一:谋…

基于Python的多元线性回归分析

一、多元线性回归分析(Multiple regression) 1.与简单线性回归相比较,具有多个自变量x 2.多元回归模型 其中是误差值,与简单线性回归分析中的要求特点相一致。其余的系数和截距为参数。 3.多元回归方程 4.估计多元回归方程(点估…

多元线性回归--案例分析及python实践

回归分析--多元回归 介绍一下多元回归分析中的统计量 总观测值总自变量自由度:回归自由度 ,残差自由度 SST总平方和 SSR回归平方和 SSE残差平方和 MSR均方回归 MSE均方残差 判定…

回归分析:多元线性回归模型 白话解析与案例实现

文章目录 线性学习多元线性回归模型多元线性回归模型的python实现 线性学习 回归分析是研究自变量x与因变量y的关系的方法。 上一节我们介绍了一元线性回归,经验公式为: $ \hat{y}\hat{\beta}1 x\hat{\beta}0 $ 在实际生活中,我们要研究的…

多元统计分析——多元线性回归

1. 经典的线性回归分析与交叉验证 examDict{ 学习时 :[0.50, 0.75, 1.00, 1.25,1.50,1.75, 1.75,2.00, 2.25,2.50, 2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50], 分:[10,22,13 ,43,20,22,33,50,62 , 48,55,75,62,73,81,76,64,82,90,93]} examDf pd.DataFrame(examDi…

spss进行多元线性回归并分析表格(转载)

1.如何使用spss进行多元线性回归。 2.分析生成结果,并判断回归是否可行。 一、使用spss进行多元线性回归: 1.输入数据 二、表格结果分析: R方是检验回归是否成功的重要要素之一,DW是残差独立性检验,衡量标准如下&…

数据分析方法--回归分析方法((SPSS建模:多元线性回归案例)

文章目录 回归定义最常用回归方法一、线性回归(Linear Regression)二、逻辑回归(Logistic Regression)三、多项式回归(Polynomial Regression)四、逐步回归(Stepwise Regression)五、岭回归(Ridge Regression)六、套索回归(Lasso Regression)七、回归(ElasticNet) 如何正确选择…

线性回归 - 多元线性回归案例 - 分析步骤、输出结果详解、与Python的结果对比 -(SPSS建模)

现在用 Python 写线性回归的博客都快烂大街了,为什么还要用 SPSS 做线性回归呢?这就来说说 SPSS 存在的原因吧。 SPSS 是一个很强大的软件,不用编程,不用调参,点巴两下就出结果了,而且出来的大多是你想要的…