C言語系統でのbmp出力

超手抜き。

#include <windows.h>
#include <stdio.h>
#include <string.h>

struct DIBDATA {
	int width;
	int height;
	int color;//色数。0はフルカラー、256は256色
	unsigned char *bits;//ビットマップへのポインタ
}; // これがDIBデータとする。

DIBDATA dib; // これにbmpデータを収めておく。

/* ヘッダー作成 */
unsigned char header[54] = {
	66,77,54,16,14,0,0,0,0,0,54,0,0,0,	/*_BITMAPFILEHEADER_*/
	40,0,0,0,128,2,0,0,224,1,0,0,1,0,24,0,0,0,0,0,	/*_BMPINFOHEADER_前半_*/
	0,16,14,0,19,11,0,0,19,11,0,0,0,0,0,0,0,0,0,0	/*_BMPINFOHEADER_後半_*/
};
/* bmpのサイズ設定 */
	header[18] = dib.width % 256;
	header[19] = int ( dib.width / 256 );
	header[22] = dib.height % 256;
	header[23] = int ( dib.height / 256 );

/* 出力 */
	int line = dib.width * 3;
	while ( 0 != line % 4 ) { line++; } // 長さの調整

	FILE *fp;
	fp = fopen(filename, "wb");
	fwrite(header, sizeof(header[0]), 54, fp);
	fwrite(dib.bits, sizeof(dib.bits[0]), line * dib.height, fp);
	fclose(fp);