|
connortao 发表于 2012-4-14 00:34 
预览没错的话,很可能就是你保存图像为BMP文件时出错了。 - SetKMode(TRUE);
- memcpy(DDBdata,(void *)image.rgb_address,width*height*2);
- SetKMode(FALSE);
- CBitmap bitmap;
- HBITMAP dstBmp;
- bitmap.CreateBitmap(width,height,1,16,DDBdata);
- HDC hdcSrc = CreateCompatibleDC(NULL);
- HDC hdcDst = CreateCompatibleDC(NULL);
- BITMAPINFOHEADER bih = {0};//位图信息头
- bih.biBitCount = 16;//每个像素字节大小
- bih.biCompression = BI_RGB;
- bih.biHeight = height;//高度
- bih.biPlanes = 1;
- bih.biSize = sizeof(BITMAPINFOHEADER);
- bih.biSizeImage = 0;// width*height*2;//图像数据大小
- bih.biWidth = width;//宽度
- BITMAPFILEHEADER bfh = {0};//位图文件头
- bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);//到位图数据的偏移量
- bfh.bfSize = bfh.bfOffBits + width*height*2;//文件总的大小
- bfh.bfType = (WORD)0x4d42;
- BITMAPINFO bi={0};
- bi.bmiHeader=bih;
- dstBmp=CreateDIBSection(hdcDst, (BITMAPINFO*)&bi, DIB_RGB_COLORS, (void **)&DIBdata, NULL, 0);
- SelectObject(hdcDst, dstBmp);
- SelectObject(hdcSrc, bitmap);
- BitBlt(hdcDst, 0, 0, width, height, hdcSrc, 0, 0, SRCCOPY);
- CFile file(_T("image.bmp"),CFile::modeCreate|CFile::modeReadWrite);
- file.Write(&bfh,sizeof(bfh));
- file.Write(&bih,sizeof(bih));
- file.Write(DIBdata,width*height*2);
- file.Close();
复制代码 这是我保存bmp的代码,这个是网上的,别人都没有问题... |
|