最近的工作,需要用到YUV文件,鉴于手头没有YUV转换工具,所以打算自己做一个。工具就选用VB了,用起来毕竟简单。
想法是从BMP文件转成YUV格式,就选用YUV422(UYVY)好了。
既然选用了BMP文件,那么就需要了解一下bmp文件的格式,下面是我拿到的相关资料:
既然选用了BMP文件,那么就需要了解一下bmp文件的格式,下面是我拿到的相关资料:
offset
|
size(byte)
|
field
|
data
|
0x 0
0x 2
0x 6
0x 8
0x a
0x e
0x12
0x16
0x1a
0x1c
0x1e
0x22
0x26
0x2a
0x2e
0x32
0x36
0x36
+4*n
|
2
4
2
2
4
4
4
4
2
2
4
4
4
4
4
4
4*n
|
“BM”
File Size(byte)
(Reserved)
(Reserved)
start offset of image data
size of Bitmap Header
width of image data(pixel)
height of image data(pixel)
‘1’
bit / pixel (1,2,8,16,24)
compress mode
compressed image size
level resolution( pixel /1m)
vertical resolution(pixel/1m)
numbers of use color
important color
color map ( if exists)
image Data
B,G,R,B,G,R,B,G,R .......
|
0x42 0x4d
0x0000e136
0x00000036
0x00000028
0x000000a0
0x00000078
0x0001
0x0018
0
0x0000e100
N/A
N/A
0
0
N/A
f0,c0,50,
f0,c1,4e,
|
上面就是此幅24位图的图像结构,真正的RGB数据是从0x36这位开始的。而且还提供了图片的尺寸width of image data & height of image data。对我们后边进行转换提供了充足的信息。
差点就忘记说了:bmp文件中还有一个特殊的地方,就是它的数据存储方式是从左下角开始的,如下图所示:
所以在转成YUV格式的时候,还需要将行进行颠倒才能看到正常的YUV图像。