您的位置:首页 > 其它

通过以二进制方式读取文件 判断文件头得到图片类型 ,上面通过拓展名有缺陷。

2012-03-19 17:28 441 查看
//通过以二进制方式读取文件 判断文件头得到图片类型 ,上面通过拓展名有缺陷。

CFile m_file(szFilePath, CFile::typeBinary|CFile::modeRead);

char file_head[9];

m_file.Read(file_head,sizeof(file_head));

file_head[8] = '/0';

CString strtemp;

strtemp.Format(L"%X",file_head[0]);

int fhead=_ttoi(strtemp.Right(2));

strtemp.Format(L"%X",file_head[1]);

CString szSecend=strtemp.Right(2);

szSecend.MakeLower();

switch (fhead)

{

case 47:

{

if (szSecend==L"49")

m_tagPicInfo.t_ImageTpye = ITYPE_GIF;

else

m_tagPicInfo.t_ImageTpye = ITYPE_ERR;

}

break;

case 0:

{

if (szSecend==L"d8")

m_tagPicInfo.t_ImageTpye = ITYPE_JPG;

else

m_tagPicInfo.t_ImageTpye = ITYPE_ERR;

}

break;

case 42:

{

if (szSecend==L"4d")

m_tagPicInfo.t_ImageTpye = ITYPE_BMP;

else

m_tagPicInfo.t_ImageTpye = ITYPE_ERR;

}

break;

case 89:

{

if (szSecend==L"50")

m_tagPicInfo.t_ImageTpye = ITYPE_PENG;

else

m_tagPicInfo.t_ImageTpye = ITYPE_ERR;

}

break;

default:

{

m_tagPicInfo.t_ImageTpye = ITYPE_ERR;

}

break;

}

m_file.Close();

if (m_tagPicInfo.t_ImageTpye == ITYPE_ERR)

{

TE("OpenPicture CFileEx Error %s", (LPCTSTR)szFilePath);

MyMessageBoxEx(L"图片文件无效!");

PostMessage(WM_CLOSE,0,0);

return FALSE;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: