如何恢复图像? 编程实现:构造位图的头的类和函数网上到处都是,可下载一个,自己写很麻烦;也可用现成的.bmp读入后替换掉数据区。非编程实现:直接将数据区文件以.raw后缀存盘,然后用photoshop打开,然后另存为.bmp格式。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FILE *fp;char tmp[256*4];BITMAPFILEHEADER bfh;BITMAPINFOHEADER bih;memset(&bfh, 0, sizeof(bfh));memset(&bih, 0, sizeof(bih));bfh.bfType = 'BM';bfh.bfSize = 14+40+256*4+384*288;bfh.bfOffBits = 14+40+256*4;bih.biSize = sizeof(bih);bih.biWidth = 384;bih.biHeight = 288;bih.biPlanes = 1;bih.biBitCount = 8;fp = fopen("C:\\Test.bmp", "wb");if (fp != NULL) { fwrite(&bfh, 1, 14, fp); fwrite(&bih, 1, 40, fp); //设置灰阶的调色盘数据 for(int n=0; n<256; n++) { memset(tmp+n*4, n, 3); tmp[n*4+3] = 0; } //写入灰阶的调色盘数据 fwrite(tmp, 1, 256*4, fp); fwrite(Data, 1, 384*288, fp); //这儿Data是你采集到的数据 close(fp);} 我不是将数据写入文件中,所有的一切我都在内存中操作我想江图像在内村中建立好,然后显示再屏幕上,而不是写入bmp文件中谢谢 jishiping 写内存也可以,去掉BITMAPFILEHEADER 那部分就可以直接当HBITMAP用了 int Size;char *buff;BITMAPINFOHEADER* pbih;Size = 40+256*4+384*288;buff = new char[Size];memset(buff, 0, Size);pbih = (BITMAPINFOHEADER*)buff;pbih->biSize = 40;pbih->biWidth = 384;pbih->biHeight = 288;pbih->biPlanes = 1;pbih->biBitCount = 8;//设置灰阶的调色盘数据for(int n=0; n<256; n++) memset(buff+40+n*4, n, 3);memcpy(buff+40+256*4, Data, 384*288); //这儿Data是你采集到的数据//画图时SetDIBitsToDevice(hDC, 0, 0, 384, 288, 0, 0, 0, 288, buff+40+256*4, (BITMAPINFO*)buf, DIB_RGB_COLORS); int Size;char *buff;BITMAPINFOHEADER* pbih;Size = 40+256*4+384*288;buff = new char[Size];memset(buff, 0, Size);pbih = (BITMAPINFOHEADER*)buff;pbih->biSize = 40;pbih->biWidth = 384;pbih->biHeight = 288;pbih->biPlanes = 1;pbih->biBitCount = 8;//设置灰阶的调色盘数据for(int n=0; n<256; n++) memset(buff+40+n*4, n, 3);memcpy(buff+40+256*4, Data, 384*288); //这儿Data是你采集到的数据//画图时SetDIBitsToDevice(hDC, 0, 0, 384, 288, 0, 0, 0, 288, buff+40+256*4, (BITMAPINFO*)buf, DIB_RGB_COLORS); windows SOCKET 2 connect() 论xxxxxxxxxxx的倒掉 有没有一本好书,介绍P2P技术(书中含有实例原代码)---在线等!!! atl高手过来看一下!!!! 谁能给我讲讲VC??? 公司用vb开发的com,在vc 中怎样使用它,请给出一般过程或书籍介绍!百分感谢!!! 有关com的问题 我用创天中文VC6,编译时没出错,但运行程序时出现:error LNK2001… 有关sqlserver7.0中用vc建库和表 GiveScore 有关活动目录设置权限问题。 如何对颜色去反!!!!
char tmp[256*4];
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;memset(&bfh, 0, sizeof(bfh));
memset(&bih, 0, sizeof(bih));
bfh.bfType = 'BM';
bfh.bfSize = 14+40+256*4+384*288;
bfh.bfOffBits = 14+40+256*4;
bih.biSize = sizeof(bih);
bih.biWidth = 384;
bih.biHeight = 288;
bih.biPlanes = 1;
bih.biBitCount = 8;
fp = fopen("C:\\Test.bmp", "wb");
if (fp != NULL) {
fwrite(&bfh, 1, 14, fp);
fwrite(&bih, 1, 40, fp);
//设置灰阶的调色盘数据
for(int n=0; n<256; n++) {
memset(tmp+n*4, n, 3);
tmp[n*4+3] = 0;
}
//写入灰阶的调色盘数据
fwrite(tmp, 1, 256*4, fp);
fwrite(Data, 1, 384*288, fp); //这儿Data是你采集到的数据
close(fp);
}
我想江图像在内村中建立好,然后显示再屏幕上,而不是
写入bmp文件中
谢谢 jishiping
char *buff;
BITMAPINFOHEADER* pbih;Size = 40+256*4+384*288;
buff = new char[Size];
memset(buff, 0, Size);
pbih = (BITMAPINFOHEADER*)buff;
pbih->biSize = 40;
pbih->biWidth = 384;
pbih->biHeight = 288;
pbih->biPlanes = 1;
pbih->biBitCount = 8;
//设置灰阶的调色盘数据
for(int n=0; n<256; n++)
memset(buff+40+n*4, n, 3);
memcpy(buff+40+256*4, Data, 384*288); //这儿Data是你采集到的数据//画图时
SetDIBitsToDevice(hDC, 0, 0, 384, 288, 0, 0, 0, 288,
buff+40+256*4, (BITMAPINFO*)buf, DIB_RGB_COLORS);
char *buff;
BITMAPINFOHEADER* pbih;Size = 40+256*4+384*288;
buff = new char[Size];
memset(buff, 0, Size);
pbih = (BITMAPINFOHEADER*)buff;
pbih->biSize = 40;
pbih->biWidth = 384;
pbih->biHeight = 288;
pbih->biPlanes = 1;
pbih->biBitCount = 8;
//设置灰阶的调色盘数据
for(int n=0; n<256; n++)
memset(buff+40+n*4, n, 3);
memcpy(buff+40+256*4, Data, 384*288); //这儿Data是你采集到的数据//画图时
SetDIBitsToDevice(hDC, 0, 0, 384, 288, 0, 0, 0, 288,
buff+40+256*4, (BITMAPINFO*)buf, DIB_RGB_COLORS);