读Exif格式的代码Word格式.docx
- 文档编号:15916720
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:41
- 大小:33.71KB
读Exif格式的代码Word格式.docx
《读Exif格式的代码Word格式.docx》由会员分享,可在线阅读,更多相关《读Exif格式的代码Word格式.docx(41页珍藏版)》请在冰豆网上搜索。
修改纪录:
使用方法:
包含此头文件,然后调用函数
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;
//厂商注释
ET_MALLOC_MAKERCOM==TRUE)这个数值保存了厂商注释数据,调用者需要使用free()
//否则为厂商注释的偏移量(注意:
是在当前SECTION中的偏移量,不是相对整个文件的)
UCHAR*ThumbnailPointer;
//缩略图数据。
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
*********************************************************************/
#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"
;
STATICEXIFINFO*m_pExifInfo=0;
STATICintm_MotorolaOrder=0;
STATICintm_ExifImageWidth=0;
/*Describesformatdescriptor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Exif 格式 代码