typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
|
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
}
|
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
|
typedef struct tagRGBQUAD { // rgbq
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
|
#include<windows.h>
#include"Image.h"
int Image::loadBitmap()
{
fp = CreateFile("test.bmp",GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
if (fp == INVALID_HANDLE_VALUE) {
return -1;
}
temp = (LPBYTE)GlobalAlloc(GPTR,GetFileSize(fp,NULL));
ReadFile(fp,temp,GetFileSize(fp,NULL),&dummy,NULL);
CloseHandle(fp);
bitmap_head=(LPBITMAPFILEHEADER)temp;
bitmap_info=(LPBITMAPINFO)(temp+sizeof(BITMAPFILEHEADER));
bitmap_map = temp+bitmap_head->bfOffBits;
return 0;
}
BITMAPINFO Image::getBitmapInfo()
{
return *bitmap_info;
}
unsigned char* Image::getBitmapMap()
{
return (unsigned char*)bitmap_map;
}
うん、こちらの方が簡単だ!!。上のクラスは適当ですので絶対に参考にはしてはいけません。参考サイトの方に
行ってください。