精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>图形图像及多媒体专题>>用c++读取bmp文件

主题:用c++读取bmp文件
发信人: idiots()
整理人: wenbobo(2002-12-27 15:53:04), 站内信件
比如说, 要将一个BMP文件读入程序, 并对其做一定的修改.
除了将其转换为点阵格式外, 还有其他方法吗?
据说可以无需格式转换的.

我读不了数据.

--
由于我很忙,不能经常到社区来。希望复我帖子的朋友随手send一份给我。谢谢。

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.37.15]
发信人: abei (阿狈), 信区: CLanguage
标  题: Re: C++如何读取BMP文件
发信站: 网易虚拟社区 (Wed Oct 27 20:09:21 1999), 站内信件

【 在 idiots (无知者) 的大作中提到: 】
: 比如说, 要将一个BMP文件读入程序, 并对其做一定的修改.
: 除了将其转换为点阵格式外, 还有其他方法吗?
: 据说可以无需格式转换的.

:    .......
我不清楚你的具体需求。假如你仅仅读入BMP文件的数据,而不是去显示
的话,完全可以把它当成一个普通文件对待。这需要对BMP的文件头,
有比较深入的了解。
如果为了显示位图,有许多现成的函数可有。比如LoadImage()网上关
于如何显示一幅位图,有许多现成的例程



--
                   ("`-''-/").___..--''"`-._ 
                    `@_ @  )   `-.  (     ).`-.__.`) 
                    (_Y_.)'  ._   )  `._ `. ``-..-' 
                  _..`--'_..-_/  /--'_.' ,' 
            ____(il),-''  (li),'  ((!.-'  

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.181.130]
发信人: idiots (无知者), 信区: CLanguage
标  题: Re: C++如何读取BMP文件
发信站: 网易虚拟社区 (Thu Oct 28 10:03:26 1999), 站内信件

abei (阿狈)

可以给一些“现成的例程”给我吗?谢谢


--
由于我很忙,不能经常到社区来。希望复我帖子的朋友随手send一份给我。谢谢。

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.116.80.78]
发信人: idiots (无知者), 信区: CLanguage
标  题: Re: C++如何读取BMP文件
发信站: 网易虚拟社区 (Thu Oct 28 10:04:14 1999), 站内信件

【 在 abei (阿狈) 的大作中提到: 】
: 【 在 idiots (无知者) 的大作中提到: 】
: : 比如说, 要将一个BMP文件读入程序, 并对其做一定的修改.
: : 除了将其转换为点阵格式外, 还有其他方法吗?
: : 据说可以无需格式转换的.
:    .......

可以给一些“现成的例程”给我吗?谢谢

--
由于我很忙,不能经常到社区来。希望复我帖子的朋友随手send一份给我。谢谢。

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.116.80.78]
发信人: abei (阿狈), 信区: CLanguage
标  题: Re: C++如何读取BMP文件
发信站: 网易虚拟社区 (Thu Oct 28 12:48:56 1999), 站内信件

【 在 idiots (无知者) 的大作中提到: 】
: 【 在 abei (阿狈) 的大作中提到: 】
: : 【 在 idiots (无知者) 的大作中提到: 】
: :    .......

:    .......
这是网上一位大虾写的代码,我忘记是谁了。应该感激这原作者。我想
转贴出来,不会违背大虾原意
别忘了在你应用的开始调用AfxOleInit();
bool DisplayImage(CDC *pDC,LPCTSTR szFilePath,int x,int y)
{
bool bRet = true;
IPicture *pPic; 
IStream *pStm; 

CFileStatus fstatus; 
CFile file; 
LONG cb; 

if (file.Open(szFilePath,CFile::modeRead) &&
file.GetStatus(szFilePath,fstatus) && 
((cb = fstatus.m_size) != -1) ) 

HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); 
LPVOID pvData = NULL; 
if (hGlobal != NULL) 

if ((pvData = GlobalLock(hGlobal)) != NULL) 

file.ReadHuge(pvData, cb); 
GlobalUnlock(hGlobal); 

CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); 

if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,
(LPVOID* )&pPic))) 

OLE_XSIZE_HIMETRIC hmWidth; 
OLE_YSIZE_HIMETRIC hmHeight; 

pPic->get_Width(&hmWidth); 
pPic->get_Height(&hmHeight); 

double fX,fY; 
fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double
)pDC->GetDeviceCaps(HORZSIZE)*100.0); 
fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((doubl
e)pDC->GetDeviceCaps(VERTSIZE)*100.0); 

if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,hmHeight,hm
Width,-hmHeight,NULL))) 
{
AfxMessageBox("Failed To Render The picture!"); 
bRet = false;
}
pPic->Release(); 

else
{
AfxMessageBox("Error Loading Picture From Stream!"); 
bRet = false;
}



else 
{
AfxMessageBox("Can't Open Image File!");
bRet = false;
}
return bRet;
}



--
                   ("`-''-/").___..--''"`-._ 
                    `@_ @  )   `-.  (     ).`-.__.`) 
                    (_Y_.)'  ._   )  `._ `. ``-..-' 
                  _..`--'_..-_/  /--'_.' ,' 
            ____(il),-''  (li),'  ((!.-'  

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.181.185]

[关闭][返回]