Resize png/jpg image in Symbian
来源:互联网 发布:淘宝素材图片免费下载 编辑:程序博客网 时间:2024/06/06 00:51
When we load image using CImageDecoder, it might happen that size of image is either larger or smaller than screen size. In these scenario we, need resize loaded image. Symbian has CBitmapScaler class to resize/scale image. The following class illustrate how to resize image.
Note: This code will work on 2nd, 3rd and 5th edition. But the code example given below (link at bottom) is tested on 3rd edition device(N73) only.
Header required:
#include <FBS.H>
#include <BitmapTransforms.h>
Library needed:
LIBRARY fbscli.lib
LIBRARY bitmaptransforms.lib
ImageResizer.h
#ifndef IMAGERESIZER_H
#define IMAGERESIZER_H
#include <e32base.h>
#include <FBS.H>
#include <BitmapTransforms.h>
class CFbsBitmap;
class MImageResizerObserver
{
public:
virtual void ResizeComplete(const TInt& aError) = 0;
};
class CImageResizer : public CActive
{
public:
~CImageResizer();
CFbsBitmap* Bitmap();
protected:
void RunL();
void DoCancel();
public:
CImageResizer(MImageResizerObserver* aObserver);
void ConstructL(CFbsBitmap& aBmp, const TSize& aSize);
private:
MImageResizerObserver* iObserver;
CFbsBitmap* iBitmap;
CBitmapScaler* iBitmapScaler;
};
#endif
ImageResizer.cpp
#include <eikenv.h>
#include "ImageResizer.h"
CImageResizer::CImageResizer(MImageResizerObserver* aObserver):CActive(EPriorityStandard)
{
iObserver = aObserver;
}
CImageResizer::~CImageResizer()
{
Cancel();
if(iBitmapScaler)
{
iBitmapScaler->Cancel();
delete iBitmapScaler;
iBitmapScaler = NULL;
}
}
void CImageResizer::ConstructL(CFbsBitmap& aBmp, const TSize& aSize)
{
CActiveScheduler::Add(this);
iBitmapScaler = CBitmapScaler::NewL();
iBitmap = &aBmp;
iBitmapScaler->Scale(&iStatus, *iBitmap, aSize);
SetActive();
}
void CImageResizer::RunL()
{
if(iStatus==KErrNone)
{
iObserver->ResizeComplete(iStatus.Int());
}
}
void CImageResizer::DoCancel()
{
iBitmapScaler->Cancel();
}
CFbsBitmap* CImageResizer::Bitmap()
{
return iBitmap;
}
//End of File
How to use this class??
//since this class is active object, we have to implement its observer
// create instance of a class in ConstructL() of your appui.
iImageResizer = new (ELeave) CImageResizer(this);
//then call ConstructL() method with passing reference of image and new size of image.
//iBitmap is of type CFbsBitmap
iImageResizer->ConstructL(*iBitmap,TSize(50,70));
//when CImageResizer completes resizing, it gives call back in
//ResizeComplete() method. now call Bitmap() method of CImageResizer to get image.
CFbsBitmap* pImage = iImageResizer->Bitmap();
//now use this pImage.
Code Example
- Example code
Related links:
- How to read images to Symbian bitmap
- Resize png/jpg image in Symbian
- Symbian里面读取png,gif,jpg图片
- 如何在Symbian里面读取png,gif,jpg图片
- 如何在Symbian里面读取png,gif,jpg图片
- 从资源中加载jpg, png到GDI+ Image
- 从资源中加载jpg, png到GDI+ Image
- Image resize
- resize image
- png jpg
- ERROR: Failure processing PNG image in Android
- store png image file in MySQL database
- Pop Open Image and Resize Window in ASP.net
- IOS Dev Intro - Resize image in ios programatically
- How to resize a *.jpg image and save the result to a file
- How to switch a photo from jpg to png, and how to resize the photo for mac?
- png、x-png、jpg、pjpeg
- GDI+实例教程之: 转换Image(BMP,JPG,GIF,PNG等) 到MetaFile(EMF等) 格式
- Print a Image[bmp, jpg, gif, png...] with full page by gdiplus
- POJ 1160 Post Office(动态规划)
- asp.net技术群66674107
- WSS2010---启用Debug支持
- How to read images to Symbian bitmap
- C++操作.ini配置文件的API
- Resize png/jpg image in Symbian
- MYSQL集群探索与实践
- 国外名校开放式课程
- S3C2440上LCD驱动(FrameBuffer)实例开发讲解
- [转]VS 2008 OpenGL 配置
- js 字符串函数操作大全
- UTF-8 BOM导致验证码不显示
- #ifdef,#else,#if,#endif (转载)
- 博客换了地方http://byteh.blog.51cto.com/