如何读取图片
来源:百度文库 编辑:神马文学网 时间:2024/04/28 08:48:37
如何读取图片
作者:佚名 文章来源:转载 更新时间:2007-11-9 17:02:02 662
我们知道,Symbian系统中只能直接显示bitmap格式的位图数据,下面的代码演示了如何使用CimageDecoder打开不同格式的图像文件,并把它转换为Symbian的bitmap格式,从而能能够在屏幕上显示出来。 /*****************************************************************************************************************Image_Reader.cpp ******************************************************************************************************************/#include
#include
#include
#include
#include
#include
#include
#include
CImage_Reader::CImage_Reader(MImageReadyCallBack& aNotify)
:CActive(0),iNotify(aNotify)
{
}
CImage_Reader::~CImage_Reader()
{
Cancel();
delete iFrame;
}
void CImage_Reader::ConstructL(const TDesC& aFileName)
{
CActiveScheduler::Add(this);
iImageName.Copy(aFileName);
TBuf8<255> ImageType;
GetFileType(aFileName, ImageType);
if(ImageType.Length() && iImageName.Length())
{
iImageDecoder = CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(),aFileName,ImageType);
delete iFrame;
iFrame = NULL;
iFrame = new(ELeave)CFbsBitmap();
iFrame->Create(iImageDecoder->FrameInfo(0).iOverallSizeInPixels,iImageDecoder->FrameInfo(0).iFrameDisplayMode);
iImageDecoder->Convert(&iStatus,*iFrame,0);
SetActive();
}
else
{
TRequestStatus* status=&iStatus;
User::RequestComplete(status, KErrNotSupported);
SetActive();
}
}
void CImage_Reader::GetFileType(const TDesC& aFileName, TDes8& aFileType)
{
TEntry FileEntry;
if(CCoeEnv::Static()->FsSession().Entry(aFileName,FileEntry) == KErrNone)
{
TBuf8<255> FileBuffer;
if(!FileEntry.IsDir())
{
TInt FileSize = FileEntry.iSize;
if(FileSize > 255)
{
FileSize = 255;
}
if(CCoeEnv::Static()->FsSession().ReadFileSection(aFileName,0,FileBuffer,FileSize) == KErrNone)
{
RApaLsSession RSession;
if(RSession.Connect() == KErrNone)
{
TDataRecognitionResult FileDataType;
RSession.RecognizeData(aFileName,FileBuffer,*&FileDataType);
if(FileDataType.iConfidence > aResult.iConfidence)
{
aFileType.Copy(FileDataType.iDataType.Des8());
}
RSession.Close();
}
}
}
}
}
void CImage_Reader::DoCancel()
{
iImageDecoder->Cancel();
}
CFbsBitmap* CImage_Reader::Bitmap()
{
return iFrame;
}
void CImage_Reader::RunL()
{
iNotify.ImageReadyL(iStatus.Int());
}/***************************************************************************************************************** Image_Reader.h ******************************************************************************************************************/#include
#include
#include
#include
#include
#include
#include
class CFbsBitmap;
class MImageReadyCallBack
{
public:
virtual void ImageReadyL(const TInt& aError) = 0;
};
class CImage_Reader : public CActive
{
public:
CImage_Reader(MImageReadyCallBack& aNotify);
void ConstructL(const TDesC& aFileName);
~CImage_Reader();
public:
CFbsBitmap* Bitmap();
protected:
void DoCancel();
void RunL();
private:
void GetFileType(const TDesC& aFileName, TDes8& aFileType);
private:
MImageReadyCallBack& iNotify;
CImageDecoder* iImageDecoder;
CFbsBitmap* iFrame;
TFileName iImageName;
};
-
作者:佚名 文章来源:转载 更新时间:2007-11-9 17:02:02 662
我们知道,Symbian系统中只能直接显示bitmap格式的位图数据,下面的代码演示了如何使用CimageDecoder打开不同格式的图像文件,并把它转换为Symbian的bitmap格式,从而能能够在屏幕上显示出来。 /*****************************************************************************************************************Image_Reader.cpp ******************************************************************************************************************/#include
#include
#include
#include
#include
#include
#include
#include
CImage_Reader::CImage_Reader(MImageReadyCallBack& aNotify)
:CActive(0),iNotify(aNotify)
{
}
CImage_Reader::~CImage_Reader()
{
Cancel();
delete iFrame;
}
void CImage_Reader::ConstructL(const TDesC& aFileName)
{
CActiveScheduler::Add(this);
iImageName.Copy(aFileName);
TBuf8<255> ImageType;
GetFileType(aFileName, ImageType);
if(ImageType.Length() && iImageName.Length())
{
iImageDecoder = CImageDecoder::FileNewL(CCoeEnv::Static()->FsSession(),aFileName,ImageType);
delete iFrame;
iFrame = NULL;
iFrame = new(ELeave)CFbsBitmap();
iFrame->Create(iImageDecoder->FrameInfo(0).iOverallSizeInPixels,iImageDecoder->FrameInfo(0).iFrameDisplayMode);
iImageDecoder->Convert(&iStatus,*iFrame,0);
SetActive();
}
else
{
TRequestStatus* status=&iStatus;
User::RequestComplete(status, KErrNotSupported);
SetActive();
}
}
void CImage_Reader::GetFileType(const TDesC& aFileName, TDes8& aFileType)
{
TEntry FileEntry;
if(CCoeEnv::Static()->FsSession().Entry(aFileName,FileEntry) == KErrNone)
{
TBuf8<255> FileBuffer;
if(!FileEntry.IsDir())
{
TInt FileSize = FileEntry.iSize;
if(FileSize > 255)
{
FileSize = 255;
}
if(CCoeEnv::Static()->FsSession().ReadFileSection(aFileName,0,FileBuffer,FileSize) == KErrNone)
{
RApaLsSession RSession;
if(RSession.Connect() == KErrNone)
{
TDataRecognitionResult FileDataType;
RSession.RecognizeData(aFileName,FileBuffer,*&FileDataType);
if(FileDataType.iConfidence > aResult.iConfidence)
{
aFileType.Copy(FileDataType.iDataType.Des8());
}
RSession.Close();
}
}
}
}
}
void CImage_Reader::DoCancel()
{
iImageDecoder->Cancel();
}
CFbsBitmap* CImage_Reader::Bitmap()
{
return iFrame;
}
void CImage_Reader::RunL()
{
iNotify.ImageReadyL(iStatus.Int());
}/***************************************************************************************************************** Image_Reader.h ******************************************************************************************************************/#include
#include
#include
#include
#include
#include
#include
class CFbsBitmap;
class MImageReadyCallBack
{
public:
virtual void ImageReadyL(const TInt& aError) = 0;
};
class CImage_Reader : public CActive
{
public:
CImage_Reader(MImageReadyCallBack& aNotify);
void ConstructL(const TDesC& aFileName);
~CImage_Reader();
public:
CFbsBitmap* Bitmap();
protected:
void DoCancel();
void RunL();
private:
void GetFileType(const TDesC& aFileName, TDes8& aFileType);
private:
MImageReadyCallBack& iNotify;
CImageDecoder* iImageDecoder;
CFbsBitmap* iFrame;
TFileName iImageName;
};
-
如何读取图片
IE下页面读取图片问题
如何读取损坏光盘内的文件
如何读取损坏光盘内的文件
我如何从文件读取文本,然后使用我刚读取的文本重命名该文件?
我如何从文件读取文本,然后使用我刚读取的文本重命名该文件?
asp.net 跑马灯 怎样从文件夹里读取图片
请教ASP中如何读取.dat的文件?
教你如何拒绝木马读取你的硬盘
教你如何拒绝木马读取你的硬盘
教你如何拒绝木马读取你的硬盘_
教你如何拒绝木马读取你的硬盘
如何9用asp读取Excel文件(比较全面)
教你如何拒绝木马读取你的硬盘_360安全公告_360安全中心
SQLite数据库如何存储和读取二进制数据 --SQLite 中文社区-- http://...
如何读取收藏夹文件的URL(眩晕中..) VB / API - CSDN社区 commun...
vb读取excel内容
信息编辑读取功能
利用GetPrivateProfileString读取配置文件
MFC文件读取1
以二进制读取文本文件
GetPrivateProfileString读取配置文件(.ini)
如何在图片上加字
如何在图片上加字