最近为了测试C6678需要读取图像,考虑到效率问题,我用C语言写了一个读取Bitmap的子程序.
这个程序我之前写过,然后这里简单修改了一下以方便C6678在CCS上测试。
本文先简要介绍这段程序,具体测试请关注后续博文。
这段程序是通用的,可以在别处引用,具体代码如下。
头文件Bitmapper.h
/*
* Bitmapper.h
*
* Created on: 2014年12月18日
* Author: fengyhack
*/
#ifndef BITMAPPER_H
#define BITMAPPER_H
#include <stdio.h>
#include <stdlib.h>
//#include <memory.h>
#pragma warning(disable:4996)
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int DWORD;
typedef long LONG;
typedef int BOOL;
#define TRUE 1
#define FALSE 0
#ifndef NULL
#define NULL 0
#endif
#define BM_WORD 0x4D42
typedef struct tagBitmapHeader
{
//WORD bfType; //Constant = 0x424D or “BM”
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes; //Constant = 1
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
}BITMAPHEADER;
typedef struct tagRGBQUAD
{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
}RGBQUAD;
typedef struct tagC3RGB
{
BYTE red;
BYTE green;
BYTE blue;
}C3RGB;
typedef struct tagBufferDims
{
int width;
int height;
int depth;
}BUFFERDIMS;
extern void printType(const int t);
extern void ShowBitmapInfo(BITMAPHEADER* pBitmapHeader);
extern BOOL OpenBitmapFile(const char* szFileName, FILE** ppFile);
extern BOOL ReadHeaderInfo(FILE* pFile, BITMAPHEADER* pBitmapHeader, BOOL dumpInfo);
extern BOOL ReadImageData(FILE* pFile, BITMAPHEADER* pBitmapHeader, BYTE** ppBuffer, BUFFERDIMS* pBufferDims);
extern BOOL ReadBitmapFile(const char* szFileName, BYTE** ppBuffer, BUFFERDIMS* pBufferDims, BOOL dumpInfo);
#endif
实现文件Bitmapper.c
/*
* Bitmapper.c
*
* Created on: 2014年12月18日
* Author: fengyhack
*/
#include "Bitmapper.h"
void printType(const int t)
{
printf("\tCompress type: ");
switch (t)
{
case 0:
printf("UNCOMPRESSED");
break;
case 1:
printf("BI_RLE8");
break;
case 2:
printf("BI_RLE4");
break;
default:
break;
}
printf("\n");
}
void ShowBitmapInfo(BITMAPHEADER* pBitmapHeader)
{
printf("\n------------------- INFORMATION -------------------\n");
printf(