為什么在soui中加載JPG文件失敗


在SOUI中解決解碼器是一個獨立的模塊。
不同的解碼器決定了程序中能夠加載什么樣的圖片類型。
使用SComMgr來加載SOUI的模塊時,debug模式下默認的圖片解碼器是imgdecoder-png。這個解碼器只能解碼PNG圖片。至於為什么用這個解碼器作為debug版本的默認解碼器是為了演示在SOUI中使用APNG動畫,只有這個解碼器支持APNG解碼。
要使用其它解碼器只需要在實例化SComMgr時提供一個解碼器參數就行:

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實現了4種圖片解碼器,除了imgdecoder-png外,其它3個都是全圖片格式支持的。
因此只需要使用
SComMgr *pComMgr = new SComMgr("imgdecoder-gdip");
代替
SComMgr *pComMgr = new SComMgr();
即可實現JPG的解碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM