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);