今天给大家介绍一下常见的位图bmp以及编码过程中常用到的一种格式yuv。
首先说说bmp格式的图片吧,这是大家最熟悉不过的位图了,展现在我们面前的是一张张生动的图片,但是不知道你是否关注过,其实每一张bmp图片的大小,也就是他所占存储空间的字节数,完全是可知的,前提是你知道这一张图片的分辨率,也就是宽和高。说这么多,难免有些空洞,举个例子吧,通常我们所说的720p的图片,其分辨率为1280*720,那么你不看他的里边具体是什么内容的时候,你便可以知道他的大小,即(1280*720*3 + 54) bytes。一张bmp的图片实际上刚开始有54个字节是存储该图片的一些信息的,包括图像的宽,高,格式之类的,问一下度娘就知道了,在此不啰嗦了。54个字节就是图像的像素信息,每一个像素用3个bytes来表示,分别表示我们常见的三原色b,g,r.。需要注意的是bmp图片的每一个像素的值是按bgr的顺序存储的。而且更值得注意的是存储的信息中是按照实际看到图像的坐下开始存储的。即按从左到右,从上到下的顺序存储的。所以要读取的时候要注意这个问题。
接下来在说说yuv图片吧,yuv是h264编码的输入数据的格式,一般需要编码的数据如果不是yuv格式的,需要通过转换转为yuv格式的,然后再次进行编码。相比bmp图片,yuv图片的存储信息里就没有前边的头了,直接便是像素数据。以yuv 420格式为例,720p的话,其空间大小的计算方式为1280*720*3 / 2, 其中y像素的大小为1280*720, u像素和v像素的存储的大小为1280*720/4,yuv, planar格式,yuv是连续存储的,也就是说先是1280*720个y的值,然后是u, 在然后是v.