BCB C++
目前显示BMP和原本预估不一样
应该是bmp format格是错误
参考了很多网络的教学
改来改去还是没有成功
想请板上大大帮忙
我的图是400*300
不知道是哪边错误?
我在bmp width写400
bmp height= 300
显示出来图更小
改了16进制也是错误
code 如下
unsigned char header[54] = {
0x42, // identity : B
0x4d, // identity : M
0, 0, 0, 0, // file size
0, 0, // reserved1
0, 0, // reserved2
54, 0, 0, 0, // RGB data offset
40, 0, 0, 0, // struct BITMAPINFOHEADER size
200, 0, 0, 0, // bmp width
200, 0, 0, 0, // bmp height
1, 0, // planes
24, 0, // bit per pixel
0, 0, 0, 0, // compression
0, 0, 0, 0, // data size
0, 0, 0, 0, // h resolution
0, 0, 0, 0, // v resolution
0, 0, 0, 0, // used colors
0, 0, 0, 0 // important colors
};
unsigned char *bmp_buf = (unsigned char*)malloc( 54 + w * h * 3);
for(int k = 0;k<54;k++)
{
bmp_buf[k] = header[k];
}
for(j =0 ; j < h ; j++){
for(i = 0 ; i < w ; i++) {
bmp_buf[ (j*w+i)*3 + 54] = colBB[(j*w+i)*3]; //B
bmp_buf[ (j*w+i)*3 +1 + 54] = colGG[(j*w+i)*3+1]; //G
bmp_buf[ (j*w+i)*3 +2 + 54] = colRR[(j*w+i)*3+2]; //R
}
}
TMemoryStream *memStream = new TMemoryStream();
memStream->SetSize(w*3*h+54);
memStream->Clear();
// 写档头与资料
memStream->Write(header,54);
memStream->Write(bmp_buf,(w*3*h));
// 要把 Position 归回零,这样 Image 元件才可以从 stream 的头开始读
memStream->Position = 0;
CalibrationImage->Picture->Bitmap->LoadFromStream(memStream);
跑出结果图连结如下
http://ppt.cc/tYcu