初学者一问:将bmp图片像素处理后,怎样在硬盘文件上显示处理后图片
菜鸟一问:将bmp图片像素处理后,怎样在硬盘文件上显示处理后图片
有图片的所有像素值,保存在一个数组里面。现在如何把这个像素值保存到新的BMP图片中,在硬盘上显示存在新的BMP文件,用C++语言。
请大家给些思路或者源代码谢谢了!!BMP:256*256,8位的
------解决方案--------------------
------解决方案--------------------
你需要了解一下 bmp文件存储格式
现在都是24、32位的,你说的八位好像要一个调色板
------解决方案--------------------
http://blog.****.net/dizuo/article/details/7888352
------解决方案--------------------
有现成的库 建议使用FreeImage
有图片的所有像素值,保存在一个数组里面。现在如何把这个像素值保存到新的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)
------解决方案--------------------
'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();
}
------解决方案--------------------
你需要了解一下 bmp文件存储格式
现在都是24、32位的,你说的八位好像要一个调色板
------解决方案--------------------
http://blog.****.net/dizuo/article/details/7888352
------解决方案--------------------
有现成的库 建议使用FreeImage