You can use this code:
Code:
/*
============================================================================
Name : ImageLoader.h
Author :
Version :
Copyright : Your copyright notice
Description : ImageLoader.h - header file
============================================================================
*/
#ifndef IMAGELOADER_H
#define IMAGELOADER_H
#include <e32base.h> //CActive Scheduler
#include <MdaImageConverter.h> //Image Conversion
//#include <ImageConversion.h>
class CImageLoader:/*public CActive,*/ public MMdaImageUtilObserver
{
public:
CImageLoader();
~CImageLoader();
CFbsBitmap* ReadImageL(const TDesC& aFileName);
void CImageLoader::SaveFile();
CFbsBitmap* ScaleDown(TInt newWidth, TInt newHeight);
public: //From MMdaImageUtilObserver
virtual void MiuoOpenComplete(TInt aError);
virtual void MiuoConvertComplete(TInt aError);
virtual void MiuoCreateComplete(TInt aError);
private: //Track conversion of image
enum TConvertState
{
EConvertStateNull,
EConvertStateConvertingFromPng,
EConvertStateReady,
EConvertStateScaling,
} iConvertState;
private: //Constructor, Destructor
//~CImageLoader();
private:
//TDesC* iFilename;
CMdaImageFileToBitmapUtility* iConverter;
CFbsBitmap* iBitmap;
//RTimer* iTimer;
TInt iErrorCode;
CMdaBitmapScaler* iScaler;
TInt aError;
// Image files saver
CImageEncoder* iEncoder;
// File server handle
//RFs& iFs;
};
#endif // IMAGELOADER_H
// End of File
Code:
/*
============================================================================
Name : ImageLoader.cpp
Author :
Version :
Copyright : Your copyright notice
Description : ImageLoader.cpp - source file
============================================================================
*/
// INCLUDE FILES
// Class include
#include "ImageLoader.h"
#include <coemain.h>
//#include <bautils.h>
//#include <ImageConversion.h>
#define IMAGEREAD_TIMEOUT 5 * 1000 * 1000
static const TDisplayMode KDeviceColourDepth = EColor4K;
static const TInt KPngFrameIndex = 0;
CImageLoader::CImageLoader(/*const TDesC *aFilename*/)//:CActive(CActive::EPriorityStandard)
{
// make a local copy of the filename
//iFilename = aFilename->Alloc();
}
CImageLoader::~CImageLoader()
{
// deallocate all data
//delete iFilename;
//delete iTimer;s
delete iConverter;
delete iBitmap;
delete iScaler;
}
CFbsBitmap* CImageLoader::ReadImageL(const TDesC& aFileName)
{
// create + initialize operation timeout timer
//iTimer = new RTimer();
//iTimer->CreateLocal();
// set timeout for the image read + conversion process
//iTimer->After(iStatus, IMAGEREAD_TIMEOUT);
//SetActive();
// start loading the image
//iFilename = aFilename->Alloc();
iConverter = CMdaImageFileToBitmapUtility::NewL(*this);
iConverter->OpenL(aFileName);
CActiveScheduler::Start();
/*if (iBitmap->IsLargeBitmap())
{ */
// ScaleDown(50, 50);
//}
//iBitmap->Save(aFileName);
/*RFs fsSession = CCoeEnv::Static()->FsSession();
TInt err = BaflUtils::CopyFile(fsSession, aFileName, _L("c:\\Nokia\\Images\\simangot2.jpg"));
if (err = KErrNone)
return iBitmap;*/
return iBitmap;
}
// called when OpenL() finishses
void CImageLoader::MiuoOpenComplete(TInt aError)
{
if( aError != KErrNone )
{
iErrorCode = aError;
//Cancel(); //Called through CActiveScheduler
return;
}
TFrameInfo info;
iConverter->FrameInfo(0, info);
// create a bitmap to write into
iBitmap = new (ELeave) CFbsBitmap();
TInt rc = iBitmap->Create(info.iOverallSizeInPixels, KDeviceColourDepth);
if( rc != KErrNone )
{
iErrorCode = rc;
//Cancel();
return;
}
// convert the gif into a bitmap
TRAPD(error, iConverter->ConvertL(*iBitmap));
// handle the error
if( error != KErrNone)
{
iErrorCode = error;
//Cancel();
return;
}
}
// called when ConvertL() finishes
void CImageLoader::MiuoConvertComplete(TInt aError)
{
if( aError != KErrNone )
{
iErrorCode = aError;
//Cancel();
return;
}
CActiveScheduler::Stop();
//Cancel();
iConverter->Close();
}
//Uncalled
void CImageLoader::MiuoCreateComplete(TInt /*aError*/)
{
}
//bitmap scaler
CFbsBitmap* CImageLoader::ScaleDown(TInt newWidth, TInt newHeight)
{
TInt KNewImageWidth = newWidth;
TInt KNewImageHeight = newHeight;
iScaler = CMdaBitmapScaler::NewL();
TRAPD(err,iScaler->ScaleL(*this,*iBitmap,TSize(KNewImageWidth,KNewImageHeight)));
CActiveScheduler::Start();
if (err == KErrNone)
{
iConvertState = EConvertStateScaling;
}
return iBitmap;
}
void CImageLoader::SaveFile()
{
//_LIT(KPictureDir,"c:\\Nokia\\Images\\simangot2.bmp");
////_LIT(KMimeType,"image/jpg");
//RFs fsSession = CCoeEnv::Static()->FsSession();
//iEncoder = CImageEncoder::FileNewL(*fsSession, KPictureDir, KMimeType);
//
//TJpegImageData* data = new (ELeave) TJpegImageData;
//// Set some format specific data
//data->iSampleScheme = TJpegImageData::EColor444;
//data->iQualityFactor = 80;
//CFrameImageData* iFrameImageData = CFrameImageData::NewL();
////frameData - ownership passed to iFrameImageData after AppendImageData
//User::LeaveIfError(iFrameImageData->AppendImageData(data));
//TRequestStatus iStatus;
//iEncoder->Convert( &iStatus, *iBitmap, iFrameImageData);
//BaflUtils::CopyFile(iFs, _L("C:\\a.txt"), _L("c:\\Nokia\\Images\\simangot2.bmp"));
}
// End of File