後でビットマップの生のピクセルデータから gdk ピックスマップを作成するときに、これらを引数として渡すことができるように、bmp から幅と高さの値を取得する必要があります。BMP 形式について調査したところ、ファイル ヘッダーは次のようになります。
struct Fileheader
{
unsigned short Type; // signature - 'BM'
unsigned long Size; // file size in bytes
unsigned short Reserved1; // 0
unsigned short Reserved2; // 0
unsigned long OffBits; // offset to bitmap
unsigned long StructSize; // size of this struct (40)
unsigned long Width; // bmap width in pixels
unsigned long Height; // bmap height in pixels
unsigned short Planes; // num planes - always 1
unsigned short BitCount; // bits per pixel
unsigned long Compression; // compression flag
unsigned long SizeImage; // image size in bytes
long XPelsPerMeter; // horz resolution
long YPelsPerMeter; // vert resolution
unsigned long ClrUsed; // 0 -> color table size
unsigned long ClrImportant; // important color count
Fileheader()
{
Size=Width=Height=Planes=BitCount=Compression=SizeImage=XPelsPerMeter= YPelsPerMeter=ClrUsed=ClrImportant=Type=StructSize=Reserved1=Reserved2=OffBits=0;}
};
}
blob を標準的な方法で行 [0] にフェッチした後
Fileheader fh;
memcpy(&fh, row[0], sizeof(Fileheader));
意味不明な値を与えるだけです
cout << "width: " << fh.Width << ", height: " << fh.Height << endl;
すなわち: 幅: 65536、高さ: 5626121834492592128
ここで何が問題なのか誰にもわかりますか?私は64ビットのLinuxボックスを使用しています。