Symbian學(xué)習(xí)筆記(5)——加載JPEG圖像的方法
如果想在symbian中使用jpg或者png圖片,則需要用到symbian提供的那個Multimedia ICL庫里的類了。其中比較重的是CImageDecoder類,提供了對圖像進行解碼的功能。
來看看如何使用它的吧。先定義兩個字串:
_LIT(KJPEGType,"image/jpeg");
使用的代碼比較簡單,如下所示
iParent->iBkImageMask=new (ELeave) CFbsBitmap();
iParent->iBkImageMask->Create( iDec-> FrameInfo().iOverallSizeInPixels,iDec-> FrameInfo().iFrameDisplayMode );
iDec->Convert( &iStatus, *(iParent->iBkImageMask) );
其中的iDec是CImageDecoder的實例,而iRFs是RFs的實例。而iParent->iBkImageMask則是一個CFbsBitmap對象實例。
也就是說,我們先利用CImageDecorder::FileNewL來打開一個圖像文件(它會自已判斷圖像類型,我們也可以提供給它我們指定的圖像類型)。然后這個圖像的信息就保存在iDec->FrameInfo()中了,利用這個信息可以創(chuàng)建一個CFbsBitmap實例(因為 symbian中所有顯示的圖像都是這種類型)。***,調(diào)用CImageDecorder的異步函數(shù)Convert就可以將圖像(jpeg 或者png格式的)轉(zhuǎn)換成CFbsBitmap位圖了。唯一的麻煩是Convert是一個異步函數(shù),***個參數(shù)是TRequestStatus類型(可以是一個活動對象的iStatus成員)。
除了CImageDecorder::FileNewL以外還有一個CImageDecorder:;DataNewL也可以用來從一個緩沖區(qū)的字節(jié)內(nèi)容構(gòu)造出圖像數(shù)據(jù),只是它第二個參數(shù)是TDesC8&類型的aSourceData。
[補充]
別忘了包括頭文件 ImageConversion.h,還有引入庫imageconversion.lib。
【編輯推薦】