×
Namespaces

Variants
Actions

如何使用Exif API

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

代码示例
测试基于
设备:: Nokia N95

兼容于
平台: S60 3rd Edition, MR

文章
关键词: CExifRead
翻译:
hoolee
最后由 hamishwillee 在 15 Jun 2012 编辑
  • 详细描述

CExifRead接口类用来分析Exif v2.2文件格式,用这个API你可以读取JPEG图像的数据,如日期,分辨率,方向,ISO速度,曝光时间等。


MMP文件

需要下列链接库和能力:

CAPABILITY        NONE
LIBRARY efsrv.lib
LIBRARY exiflib.lib


头文件

读取Exif数据的类

#include <exifread.h>
#include <f32file.h>
 
class CMyExifReader : public CBase
{
public:
static CMyExifReader* NewL();
static CMyExifReader* NewLC();
virtual ~CMyExifReader();
private:
CMyExifReader();
void ConstructL();
public:
void ReadExifDataL(TDesC& aFilename);
 
public:
HBufC8* iImageDescription;
HBufC8* iImageDate;
 
};


源文件

CMyExifReader::CMyExifReader()
{
}
 
CMyExifReader* CMyExifReader::NewL()
{
CMyExifReader* self = NewLC();
CleanupStack::Pop();
return self;
}
 
CMyExifReader* CMyExifReader::NewLC()
{
CMyExifReader* self = new (ELeave) CMyExifReader();
CleanupStack::PushL( self );
self->ConstructL();
return self;
}
 
void CMyExifReader::ConstructL()
{
}
 
CMyExifReader::~CMyExifReader()
{
delete iImageDescription;
delete iImageDate;
}
 
void CMyExifReader::ReadExifDataL(TDesC& aFilename)
{
// 1. Read Exif image from the file to a buffer
RFile file;
User::LeaveIfError( file.Open( CEikonEnv::Static()->FsSession(), aFilename, EFileRead ) );
CleanupClosePushL( file );
TInt size = 0;
file.Size(size);
HBufC8* exif = HBufC8::NewL( size );
CleanupStack::PushL( exif );
TPtr8 bufferDes( exif->Des() );
User::LeaveIfError( file.Read( bufferDes ) );
CleanupStack::Pop( exif );
CleanupStack::PopAndDestroy(); // file
CleanupStack::PushL( exif );
 
// 2. Instantiate Exif reader...
CExifRead* read = CExifRead::NewL( exif->Des() );
CleanupStack::PushL( read );
 
// 3. Get required data from the Exif image...
TInt err = KErrNone;
TRAP(err,iImageDescription = read->GetImageDescriptionL());
TRAP(err,iImageDate = read->GetDateTimeL());
// TODO: See CExifRead API for getting more data from image
 
// 4. Delete the reader instance...
CleanupStack::PopAndDestroy( read );
CleanupStack::PopAndDestroy( exif );
}


相关连接

Exif API

File:GeoTagging Example.zip

This page was last modified on 15 June 2012, at 05:14.
163 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×