Symbian学习笔记(5):加载JPEG图像的方法

  上次学习的是从MIF和MBM文件中加载图像,一般在程序中出现的图片都可以用这个方法,但有一点点遗憾,它只能使用svg或bmp格式,BREW或J2ME中的资源却多为png格式的。

 如果想在symbian中使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了。其中比较重的是CImageDecoder类,提供了对图像进行解码的功能。

来看看如何使用它的吧。先定义两个字串:

_LIT(KJPEGFile,"C://Data//me.jpg");
_LIT(KJPEGType,"image/jpeg");

使用的代码比较简单,如下所示:

iDec  =  CImageDecoder::FileNewL(iRFs,KJPEGFile);
    
  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()中了,利用这个信息可以创建一个CFbsBitmap实例(因为symbian中所有显示的图像都是这种类型)。最后,调用CImageDecorder的异步函数Convert就可以将图像(jpeg 或者png格式的)转换成CFbsBitmap位图了。唯一的麻烦是Convert是一个异步函数,第一个参数是TRequestStatus类型(可以是一个活动对象的iStatus成员)。

除了CImageDecorder::FileNewL以外还有一个CImageDecorder:;DataNewL也可以用来从一个缓冲区的字节内容构造出图像数据,只是它第二个参数是TDesC8&类型的aSourceData。

[补充]

别忘了包括头文件 ImageConversion.h,还有引入库imageconversion.lib。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值