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