CImage 所加载的各类型图片问题
用CImage对像加载了各类型的图片后,CImage中的像素顺序是怎么样的,是按其自己的顺序存储还是按照所加载类型的图片的像素顺序存储。例如:bmp类型图片,640*48...
用CImage对像加载了各类型的图片后,CImage中的像素顺序是怎么样的,是按其自己的顺序存储还是按照所加载类型的图片的像素顺序存储。例如:bmp类型图片,640*480.那么m_image.GetPixelAddress(i,j)具体怎么理解。
展开
展开全部
使用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。
来看看如何使用它的吧。先定义两个字串:
_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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询