读Exif格式的代码.docx

上传人:b****4 文档编号:3005737 上传时间:2022-11-17 格式:DOCX 页数:41 大小:33.71KB
下载 相关 举报
读Exif格式的代码.docx_第1页
第1页 / 共41页
读Exif格式的代码.docx_第2页
第2页 / 共41页
读Exif格式的代码.docx_第3页
第3页 / 共41页
读Exif格式的代码.docx_第4页
第4页 / 共41页
读Exif格式的代码.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

读Exif格式的代码.docx

《读Exif格式的代码.docx》由会员分享,可在线阅读,更多相关《读Exif格式的代码.docx(41页珍藏版)》请在冰豆网上搜索。

读Exif格式的代码.docx

读Exif格式的代码

////////////////////////////////////////////////////////////////////////////////

//     .h 文件

/********************************************************************

Copyright@版权所有@1998-2005hengai。

保留所有权利。

********************************************************************/

 

/********************************************************************

文件说明:

能够读取JPG图像文件中的EXIF信息

文件名称:

exif.h

版本号:

1.0.0

作者:

hengai

修改纪录:

使用方法:

包含此头文件,然后调用函数

intEXIF_Read(LPCTSTRpszJpgFileName,EXIFINFO*pExifInfo)

即可获取EXIF信息。

EXIF信息包含在参数pExifInfo中

在定义了#defineEXIF_OUTPUT_ERRMSG(默认下已经定义)后可以使用

LPCTSTREXIF_GetErrorString();获取出错信息

*********************************************************************

//////////////////////////////////////////////////////////////////////////

#ifndefSTATIC

#defineSTATICstatic

#endif

#defineEXIF_OUTPUT_ERRMSG//定义是否输出出错信息

//////////////////////////////////////////////////////////////////////////

//定义常量

#defineMAX_COMMENT1000//最大的注释字符串长度

//////////////////////////////////////////////////////////////////////////

//写入注释时,表明注释的类型,如ASCII,UNICODE等

typedefenumECT{

CT_ASCII=0,

CT_UNICODE,

CT_JIS,

CT_UNDEFINE

}COMMENT_TYPE;

//////////////////////////////////////////////////////////////////////////

//定义需要的结构体

#defineET_NOT_CLOSE_FILE0x00000001//最后不关闭打开的文件句柄

#defineET_MALLOC_THUMBNAIL0x00000002//拷贝缩略图的数据,调用者需要使用free()

#defineET_MALLOC_USERCOM0x00000004//是否拷贝用户注释,调用者需要使用free()

#defineET_MALLOC_MAKERCOM0x00000008//是否拷贝厂商注释,调用者需要使用free()

//JPG文件中的读入后的EXIFF信息保存到这个结构体中

typedefstructtag_ExifInfo{

DWORDdwExifType;//取值为ET_NOT_CLOSE_FILE|ET_MALLOC_THUMBNAIL,....

DWORDdwExifType2;

charVersion[5];//EXIF信息版本

charCameraMake[32];//DC制造商

charCameraModel[40];//DC型号

charDateTime[20];//JPG文件日期

charDateTimeDigitized[20];//JPG文件被其它软件修改日期

intHeight,Width;//图像高度、宽度

intOrientation;//拍摄方向,例如相机向左手方向旋转后拍摄的

intIsColor;//

intProcess;//被处理

intFlashUsed;//是否使用闪光灯

floatFocalLength;//焦距

floatExposureTime;//曝光时间(快门速度)

floatApertureFNumber;//光圈数

floatDistance;//拍摄物体距离

floatCCDWidth;//CCD大小

floatExposureBias;//曝光补偿

intWhitebalance;//白平衡

intMeteringMode;//测光模式

intExposureProgram;//曝光

intISOequivalent;//ISO

intCompressionLevel;//压缩

floatFocalplaneXRes;//焦平面X轴分辨率

floatFocalplaneYRes;//焦平面Y轴分辨率

floatFocalplaneUnits;//焦平面分辨率单位

floatXresolution;//X轴分辨率

floatYresolution;//Y轴分辨率

floatResolutionUnit;//分辨率单位

floatBrightness;//亮度

charComments[MAX_COMMENT];//注释

DWORDUserCOMLength;//用户注释长度。

如果==0表示没有用户注释

char*UserCOM;//用户注释

//if(dwExifType&ET_MALLOC_USERCOM==TRUE)这个数值保存了用户注释数据,调用者需要使用free()

//否则为用户注释的偏移量(相对于文件起始0处)

DWORDMakerCOMLength;//厂商注释长度。

如果==0表示没有厂商注释

char*MakerCOM;//厂商注释

//if(dwExifType&ET_MALLOC_MAKERCOM==TRUE)这个数值保存了厂商注释数据,调用者需要使用free()

//否则为厂商注释的偏移量(注意:

是在当前SECTION中的偏移量,不是相对整个文件的)

UCHAR*ThumbnailPointer;//缩略图数据。

//if(dwExifType&ET_MALLOC_THUMBNAIL==TRUE)这个数值保存了缩略图的数据

//否则为一个DWORD(需要强制转换)表示缩略图在JPG文件中的偏移值(相对于文件起始0处)

DWORDThumbnailSize;//缩略图的大小(字节流ThumbnailPointer的长度)

//如果<=0表示该JPG文件没有缩略图

HFILEhJpgFileHandle;//返回打开的JPG文件句柄。

必须dwExifType&ET_NOT_CLOSE_FILE==TRUE才是有效句柄

//用户需要使用CloseHandle(hJpgFileHandle)来关闭这个句柄

BOOLIsExif;//是否存在EXIF信息

}EXIFINFO;

//////////////////////////////////////////////////////////////////////////

//接口函数

intEXIF_Read(LPCTSTRpszJpgFileName,EXIFINFO*pExifInfo);

LPCTSTREXIF_GetErrorString();

intEXIF_AddUserComments(LPCTSTRpszJpgFileName,LPCTSTRpszUserComments,DWORDdwCommentLength,COMMENT_TYPEnCommentType);

////////////////////////////////////////////////////////////////////////

//  .c文件

/********************************************************************

Copyright@版权所有@1998-2005HENGAI。

保留所有权利。

********************************************************************/

 

/********************************************************************

文件说明:

文件名称:

exif.c

版本号:

1.0.0

作者:

hengai

修改纪录:

*********************************************************************/

#include"exif.h"

//////////////////////////////////////////////////////////////////////////

//读取EXIF过程中需要的结构体

typedefstructtag_Section_t{

UCHAR*Data;

intType;

unsignedSize;

}Section_t;

//////////////////////////////////////////////////////////////////////////

#ifdefEXIF_OUTPUT_ERRMSG

STATICTCHARm_szLastError[256];//这里保存了出错的信息

#defineEXIF_ERR_OUT(str_err)strcpy(m_szLastError,str_err);

LPCTSTREXIF_GetErrorString()

{

return(LPCTSTR)m_szLastError;

}

#else

#defineEXIF_ERR_OUT

LPCTSTREXIF_GetErrrorString()

{

return"Plese#defineEXIT_ERR_OUTinexif.h";

}

#endif

STATICEXIFINFO*m_pExifInfo=0;//

STATICintm_MotorolaOrder=0;//

STATICintm_ExifImageWidth=0;//

//////////////////////////////////////////////////////////////////////////

/*Describesformatdescriptor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1