用VC如何读取.img文件

springwuu 2008-03-16 08:16:24
大家好!我是新来的,由于编程基础比较弱,但是现在需要用VC来实现读取显示.img的文件,就是envi的标准格式的图像,在网上找了好多都找不到,请问能帮一下忙如何实现吗?
...全文
396 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
城南的星星 2010-03-30
  • 打赏
  • 举报
回复
请问3楼的朋友,那个image2是什么玩意?
Forrest23 2008-05-10
  • 打赏
  • 举报
回复
请问楼主你有没有实现VC读取.img文件的程序呢?能不能教我下,谢谢
springwuu 2008-04-11
  • 打赏
  • 举报
回复
嘿嘿,谢谢大家的意见了~~~
asdf2110 2008-03-19
  • 打赏
  • 举报
回复
void CReadDatView::ReadDatFile()
{
int i,j;
CFileDialog dlg(TRUE, ".*", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"All Files(*.*)|*.*||",NULL);
CString FileName;
if(dlg.DoModal()==IDOK)
{
FileName=dlg.GetFileName();
CFile file(FileName,CFile::typeBinary|CFile::modeRead);//|
length=file.GetLength();
length=(int)ceil(sqrt(length));
Image=new BYTE*[length];
for(i=0;i<length;i++)
Image[i]=new BYTE[length];
for(i=0;i<length;i++)
for(j=0;j<length;j++)
{
file.Read(&Image[i][j],sizeof(BYTE));
}
file.Close();
Draw=FALSE;
}
else{return;}
}
自己加个菜单项,调用这个函数就行,在OnDraw()
利用这个显示
void CReadDatView::OnDraw(CDC* pDC)
{
CReadDatDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int i,j;
//显示解码后图像
if(!Draw)
{
for(i=0;i<length;i++)
for(j=0;j<length;j++)
{
BYTE tmp=Image[j][i];////
pDC->SetPixel(i,j,RGB(tmp,tmp,tmp));
}
if(Image2)
{ for(i=0;i<length;i++)
for(j=0;j<length;j++)
{
BYTE tmp=Image2[j][i];////
pDC->SetPixel(i+513,j,RGB(tmp,tmp,tmp));
}
}
}
}
Draw为布尔变量

void CReadDatView::OnOpenDat()
{
// TODO: Add your command handler code here
ReadDatFile();
Invalidate();//使窗口无效
}//菜单项调用
吴双1983 2008-03-19
  • 打赏
  • 举报
回复
用gdi+ 试下效果怎么样。
vafa123 2008-03-18
  • 打赏
  • 举报
回复
.img 是纯二进制文件,只需用基本的fopen()打开就行了,读取时用.hdr文件里samples,bands,lines的数据算一下要一次读多少字节。显示时要注意.img文件的灰度级不是256级,为显示效果好,先调整一下灰度级。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧