[求助]不打开图象,如何读取图象的像素到一数组中? 图象在硬盘中保存着,建立一个基于单文档的工程,在不打开图象的情况下如何将图象的点像素值读取到一数组中呢?图象是24位的BMP文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CFile file; file.Open(TEXT("XXX.bmp"),CFile::Read); HANDLE hMp=::CreateFileMapping(file.m_hFile,NULL,PAGE_READONLY,0,0,NULL); LPVOID pData=::MapViewOfFile(hMp,FILE_MAP_READ,0,0,0); LPBITMAPFILEHEADER pBPH; pBPH=(LPBITMAPFILEHEADER)pData; BYTE* pBits=(BYTE*)pData+pBPH->bfOffBits;//pBits就是你要的byte数组////////////////////////////////////////////////////////////////////////////以上代码是我随手写来,你在加上一点错误判断。 谢谢yxz_lp() ( ) 信誉:100 我是这样创建的,完全用文件操作,也可以的unsigned char a[4],b[4];FILE* stream; //--char c = '\n';errno_t err;if( (err = fopen_s( &stream, PathName, "rb" )) != 0 ) return;else { fseek(stream,18,SEEK_SET); fread(&a,4,1,stream); fread(&b,4,1,stream); m_lWidth = lRow; // m_lHeight = lCol; // fseek(stream,54,SEEK_SET); for(int i=0;i<m_lHeight;i++) { for(int j=0;j<m_lWidth;j++) { for(int k=0;k<3;k++) { fread(&m_iRGB[m_lHeight-1-i][j][k],1,1,stream); } } }} if( (err = fopen_s( &stream, PathName, "rb" )) != 0 )~。~这个也叫不打开~。~ knightshenbin(勤练内功)能否说明白些?不很懂的说. livedeal(怀念) :我的做法没错误吧?谢谢 请指点,MFC中Radio的用法。 WINDOWS7环境下CString::LoadString函数问题,随时跟帖 打印预览的显示问题 CScrollBar滚动条的问题 CTreeListCTRL的InsertColumn不能显示插入的文字。高手快来啊。在线等。 请问如何把一串16进制数转为汇编代码? 多数据循环中,如何使程序能够响应别的操作 高分求一段小程序,谢谢 100分:我做了一个按钮菜单(menu button),如何使它SetCheck()等? 请问有什么方法或者控件可以按指定的顺序显示一组图片吗? 如何串口连续发送指定名开头的txt文件,多谢 DLL被Windows释放问题
file.Open(TEXT("XXX.bmp"),CFile::Read);
HANDLE hMp=::CreateFileMapping(file.m_hFile,NULL,PAGE_READONLY,0,0,NULL);
LPVOID pData=::MapViewOfFile(hMp,FILE_MAP_READ,0,0,0);
LPBITMAPFILEHEADER pBPH;
pBPH=(LPBITMAPFILEHEADER)pData;
BYTE* pBits=(BYTE*)pData+pBPH->bfOffBits;//pBits就是你要的byte数组
////////////////////////////////////////////////////////////////////////////
以上代码是我随手写来,你在加上一点错误判断。
我是这样创建的,完全用文件操作,也可以的
unsigned char a[4],b[4];
FILE* stream; //--
char c = '\n';
errno_t err;if( (err = fopen_s( &stream, PathName, "rb" )) != 0 )
return;
else
{
fseek(stream,18,SEEK_SET);
fread(&a,4,1,stream);
fread(&b,4,1,stream); m_lWidth = lRow; //
m_lHeight = lCol; // fseek(stream,54,SEEK_SET);
for(int i=0;i<m_lHeight;i++)
{
for(int j=0;j<m_lWidth;j++)
{
for(int k=0;k<3;k++)
{
fread(&m_iRGB[m_lHeight-1-i][j][k],1,1,stream);
}
}
}
}
~。~这个也叫不打开~。~
能否说明白些?
不很懂的说.
我的做法没错误吧?
谢谢