首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

初学者一问:将bmp图片像素处理后,怎样在硬盘文件下显示处理后图片

2012-12-18 
菜鸟一问:将bmp图片像素处理后,怎样在硬盘文件上显示处理后图片有图片的所有像素值,保存在一个数组里面。现

菜鸟一问:将bmp图片像素处理后,怎样在硬盘文件上显示处理后图片
   有图片的所有像素值,保存在一个数组里面。现在如何把这个像素值保存到新的BMP图片中,在硬盘上显示存在新的BMP文件,用C++语言。
   请大家给些思路或者源代码谢谢了!!BMP:256*256,8位的

[最优解释]


LPSTR lpData;//你的数组
BITMAP btm;
CDC dc;
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;//图片位数如32,16
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;//图片高
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;//图片宽
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
CString name;//输出文件名

BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)
[其他解释]
你需要了解一下  bmp文件存储格式

现在都是24、32位的,你说的八位好像要一个调色板


[其他解释]
'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
if(bf.Open(name,CFile::modeCreate
[其他解释]
CFile::modeWrite))
{
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData,size);
bf.Close();
}

热点排行