なぜsouiでJPGファイルのロードに失敗したのか
3228 ワード
SOUIでデコーダを解決するのは独立したモジュールです.異なるデコーダは、プログラムにどのようなピクチャタイプをロードできるかを決定する.SComMgrを使用してSOUIのモジュールをロードする場合、debugモードでデフォルトのピクチャデコーダはimgdecoder-pngです.このデコーダはPNGピクチャしか復号できない.このデコーダをdebugバージョンのデフォルトデコーダとして使用する理由は、SOUIでAPNGアニメーションを使用することを示すためであり、このデコーダだけがAPNG復号をサポートする.他のデコーダを使用するには、SComMgrをインスタンス化するときにデコーダパラメータを1つだけ指定する必要があります.
SOUIは,imgdecoder−pngを除いた4種類のピクチャデコーダを実現していることが分かるが,他の3つは全ピクチャフォーマットでサポートされている.したがって、SComMgr*pComMgr=new SComMgr(「imgdecoder-gdip」)のみを使用する必要があります.SComMgr*pComMgr=new SComMgr();JPGの復号化が可能です.
class SComMgr
{
public:
SComMgr(LPCTSTR pszImgDecoder = NULL)
{
if(pszImgDecoder) m_strImgDecoder = pszImgDecoder;
else m_strImgDecoder = COM_IMGDECODER;
}
BOOL CreateImgDecoder(IObjRef ** ppObj)
{
if(m_strImgDecoder == _T("imgdecoder-wic"))
return SOUI::IMGDECODOR_WIC::SCreateInstance(ppObj);
else if(m_strImgDecoder == _T("imgdecoder-stb"))
return SOUI::IMGDECODOR_STB::SCreateInstance(ppObj);
else if(m_strImgDecoder == _T("imgdecoder-png"))
return SOUI::IMGDECODOR_PNG::SCreateInstance(ppObj);
else if(m_strImgDecoder == _T("imgdecoder-gdip"))
return SOUI::IMGDECODOR_GDIP::SCreateInstance(ppObj);
else
{
SASSERT(0);
return FALSE;
}
}
//...
}
SOUIは,imgdecoder−pngを除いた4種類のピクチャデコーダを実現していることが分かるが,他の3つは全ピクチャフォーマットでサポートされている.したがって、SComMgr*pComMgr=new SComMgr(「imgdecoder-gdip」)のみを使用する必要があります.SComMgr*pComMgr=new SComMgr();JPGの復号化が可能です.