一.实验要求
了解TGA文件的存储格式,将TGA格式文件转换为YUV格式。
二.实验过程
1.程序的设计思路是:
1、先建立一个TGA文件的头文件结构体,用于读取头文件数据。
2、从头文件中获得图片长宽数据,因为只支持类型为2的文件,在无调色板无图像信息的情况下,数据的偏移量固定为18。
3、定好偏移量后,因为TGA文件的数据是从左下角读入,也就是图片的上下是颠倒的,读取RGB数据时需要将图片正向读入。
4、之前写过RGB2YUV的程序,因此在读入RGB数据后,可以直接调用转化为YUV图像。
2.实验代码
头文件结构体函数
#ifndef HEAD_DEFINE_H_INCLUDED
#define HEAD_DEFINE_H_INCLUDED
typedef struct{
char IDlength = 0;
char Colormaptype = 0;
char Imagetypecode = 0;
short Colormapoffset = 0;
short Colormaplength = 0;
char Colormapdepth = 0;
short Xorigin = 0;
short Yorigin = 0;
short Width = 0;
short Height = 0;
char Bitsperpixel = 0;
char Imagedescriptor = 0;
}Headfile;
void initialHeadfile(unsigned char* buffer, Headfile* H){
H->IDlength = buffer[0];
H->Colormaptype = buffer[1];
H->Imagetypecode = buffer[2];
H->Colormapoffset = (buffer[3]<<4) + buffer[4];
H->Colormaplength = (buffer[5]<<4) + buffer[6];
H->Colormapdepth = buffer[7];
H->Xorigin = (buffer[8]<<4) + buffer[9];
H->Yorigin = (buffer[10]<<4) + buffer[11];
H->Width = (buffer[13]*256) + buffer[12];
H->Height = (buffer[15]<