.BMPファイルを読み込む

ここまでの内容
それでは、bmpファイルを読むことにします。 
 しかし、そう簡単にはいかないようです。  BMPファイルは複数の形式が存在します。
BMPファイルはヘッダー部とデータ部に分かれています。
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;
ほかにも BITMAPV4HEADER やOS/2用のヘッダーなどがあります。 ここらへんのヘッダーの内容はWisdomsoftが参考になります。
とりあえず、biSizeとbiWidthとbiHeightとがわかれば言いか。んっカラーマップはどうするのだろう。 biClrImportantまできちんと読み取らないとやはり駄目か...?  では読み取ることにしよう。

ファイル関係

 ファイルの扱い方は創作プログラミング研究室で 学びました。  というのも、ファイルからの情報を構造体ごとに読み込んでいこうと考えていたのですが、 もっと手軽にできることがわかりました。 lpbyteでファイルのデーターをすべて読み込んでいて。 ヘッダーの情報やビットマップの中身は、lpbyteのアドレスを覚えておく方法です。 以下
#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;
}


うん、こちらの方が簡単だ!!。上のクラスは適当ですので絶対に参考にはしてはいけません。参考サイトの方に 行ってください。
ここまでの内容

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル