jpg文件读取.docx

上传人:b****5 文档编号:8375940 上传时间:2023-01-30 格式:DOCX 页数:43 大小:30.35KB
下载 相关 举报
jpg文件读取.docx_第1页
第1页 / 共43页
jpg文件读取.docx_第2页
第2页 / 共43页
jpg文件读取.docx_第3页
第3页 / 共43页
jpg文件读取.docx_第4页
第4页 / 共43页
jpg文件读取.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

jpg文件读取.docx

《jpg文件读取.docx》由会员分享,可在线阅读,更多相关《jpg文件读取.docx(43页珍藏版)》请在冰豆网上搜索。

jpg文件读取.docx

jpg文件读取

jpg文件读取.txt我的优点是:

我很帅;但是我的缺点是:

我帅的不明显。

什么是幸福?

幸福就是猫吃鱼,狗吃肉,奥特曼打小怪兽!

令堂可是令尊表姐?

我是胖人,不是粗人。

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

//.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*/

staticconstintm_BytesPerFormat[]={0,1,1,2,4,8,1,1,2,4,8,4,8};

#defineNUM_FORMATS12

#defineFMT_BYTE1//FormatByte

#defineFMT_STRING2

#defineFMT_USHORT3

#defineFMT_ULONG4

#defineFMT_URATIONAL5

#defineFMT_SBYTE6

#defineFMT_UNDEFINED7

#defineFMT_SSHORT8

#defineFMT_SLONG9

#defineFMT_SRATIONAL10

#defineFMT_SINGLE11

#defineFMT_DOUBLE12

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

#defineMAX_SECTIONS20//JPG文件中能够允许的最多SECTION个数

#ifndefM_SOI

#defineM_SOF00xC0//StartOfFrameN

#defineM_SOF10xC1//Nindicateswhichcompressionprocess

#defineM_SOF20xC2//OnlySOF0-SOF2arenowincommonuse

#defineM_SOF30xC3

#defineM_SOF50xC5//NB:

codesC4andCCareNOTSOFmarkers

#defineM_SOF60xC6

#defineM_SOF70xC7

#defineM_SOF90xC9

#defineM_SOF100xCA

#defineM_SOF110xCB

#defineM_SOF130xCD

#defineM_SOF140xCE

#defineM_SOF150xCF

#defineM_SOI0xD8//StartOfImage(beginningofdatastream)

#defineM_EOI0xD9//EndOfImage(endofdatastream)

#defineM_SOS0xDA//StartOfScan(beginscompresseddata)

#defineM_JFIF0xE0//Jfifmarker

#defineM_EXIF0xE1//Exifmarker

#defineM_COM0xFE//COMment

//定义APP标识(SECTION)

#defineM_APP00xE0

#defineM_APP10xE1

#defineM_APP20xE2

#defineM_APP30xE3

#defineM_APP40xE4

#defineM_APP50xE5

#defineM_APP60xE6

//...

#endif

//Describestagvalues

//注意:

下面的定义是按照IntelCPU来定义的,也就是说所有的都是高位在后,

//这样的定义可能与EXIF白皮书上的定义不一致。

例如白皮书上把TAG_MAKE定义为0F01

//下面是主要信息

#defineTAG_MAKE0x010F//相机DC制造商

#defineTAG_MODEL0x0110//DC型号

#defineTAG_ORIENTATION0x0112//拍摄时方向,例如向左手旋转DC90度拍摄照片

#defineTAG_XRESOLUTION0x011A//X轴分辨率

#defineTAG_YRESOLUTION0x011B//Y轴分辨率

#defineTAG_RESOLUTIONUNIT0x0128//分辨率单位,例如inch,cm

#defineTAG_DATATIME0x0132//日期时间

#defineTAG_YBCR_POSITION0x0213//YCbCr位置控制,例如居中

#defineTAG_COPYRIGHT0x8298//版权

#defineTAG_EXIF_OFFSET0x8769//EXIF偏移,这时候相当于处理一个新的EXIF信息

//

#defineTAG_IMAGEWIDTH0x0001//图像宽度

#defineTAG_IMAGEHEIGHT0x0101//图像高度

//BOOKMARK

//辅助信息

#defineTAG_EXPOSURETIME0x829A//曝光时间,例如1/30秒

#defineTAG_FNUMBER0x829D//光圈,例如F2.8

#defineTAG_EXIF_VERSION0x9000//EXIF信息版本

#defineTAG_DATETIME_ORIGINAL0x9003//照片拍摄时间,例如2005-10-1311:

09:

35

#defineTAG_DATATIME_DIGITIZED0x9004//相片被其它图像修改软件修改后的时间,例如2005-10-1311:

36:

35

#defineTAG_COMPONCONFIG0x9101//ComponentsConfiguration色彩空间配置

#defineTAG_COMPRESS_BIT0x9202//每像素压缩位数

#defineTAG_SHUTTERSPEED0x9201//快门速度,例如1/30秒

#defineTAG_APERTURE0x9202//光圈值,例如F2.8

#defineTAG_BRIGHTNESS0x9203//亮度

#defineTAG_EXPOSURE_BIAS0x9204//曝光补偿,例如EV0.0

#defineTAG_MAXAPERTURE0x9205//最大光圈值,例如F2.8

#defineTAG_SUBJECT_DISTANCE0x9206//拍摄物距离,例如3.11米

#defineTAG_METERING_MODE0x9207//测光模式,例如矩阵

#defineTAG_WHITEBALANCE0x9208//LightSource白平衡

#defineTAG_FLASH0x9209//是否使用闪光灯

#defineTAG_FOCALLENGTH0x920A//焦距,例如7.09mm

#defineTAG_USERCOMMENT0x9286//用户注释

#defineTAG_MAKE_COMMENT0x927C//厂商注释。

这个版本不提供(2005-10-13)

#defineTAG_SUBSECTIME0x9290//SubSecTime

#defineTAG_SUBTIME_ORIGINAL0x9291//SubSecTimeOriginal

#defineTAG_SUBTIME_DIGITIZED0x9292//SubSecTimeDigitized

#defineTAG_FLASHPIXVERSION0x00A0//FlashPix版本

#defineTAG_COLORSPACE0x01A0//色彩空间,例如sRGB

#defineTAG_PIXEL_XDIMENSION0x02A0//

#defineTAG_PIXEL_YDIMENSION0x03A0//

#defineTAG_

//EXIFR98

//缩略图

#defineTAG_INTEROP_OFFSET0xa005//偏移

#defineTAG_FOCALPLANEXRES0xA20E//焦平面X轴分辨率,例如1024000/278

#defineTAG_FOCALPLANEYRES0xA20F//焦平面X轴分辨率,例如768000/209

#defineTAG_FOCALPLANEUNITS0xA210//焦平面分辨率单位

#defineTAG_EXIF_IMAGEWIDTH0xA002//EXIF图像宽度(就是这张JPG图像)

#defineTAG_EXIF_IMAGELENGTH0xA003//EXIF图像高度

#defineTAG_EXPOSURE_PROGRAM0x8822//

#defineTAG_ISO_EQUIVALENT0x8827//

#defineTAG_COMPRESSION_LEVEL0x9102//

#defineTAG_THUMBNAIL_OFFSET0x0201//缩略图偏移

#defineTAG_THUMBNAIL_LENGTH0x0202//缩略图大小

#defineTAG_GPS_VERSIONID0x0000//GPS版本

#defineTAG_GPS_LATITUDEREF0x0001//纬度参考,例如南纬

#defineTAG_GPS_LATITUDE0x0002//纬度值

#defineTAG_GPS_LONGITUDEREF0x0003//经度参考,例如东经

#defineTAG_GPS_LONGITUDE0x0004//经度值

#defineTAG_GPS_ALTITUDEREF0x0005//海拔高度参考

#defineTAG_GPS_ALTITUDE0x0006//海拔

#defineTAG_GPS_TIMESTAMP0x0007//时间戳

#defineTAG_GPS_SATELLITES0x0008//卫星

#defineTAG_GPS_STATUS0x0009//状态

#defineTAG_GPS_MEASUREMODE0x000A//

#defineTAG_GPS_DOP0x000B//

#defineTAG_GPS_SPEEDREF0x000C//

#defineTAG_GPS_SPEED0x000D//

#defineTAG_GPS_TRACKREF0x000E//

#defineTAG_GPS_TRACK0x000F//

#defineTAG_GPS_IMGDIRECTIONREF0x0010//

#defineTAG_GPS_IMGDIRECTION0x0011//

#defineTAG_GPS_MAPDATUM0x0012//

#defineTAG_GPS_DESTLATITUDEREF0x0013//

#defineTAG_GPS_DESTLATITUDE0x0014//

#defineTAG_GPS_DESTLONGITUDEREF0x0015//

#defineTAG_GPS_DESTLONGI

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

当前位置:首页 > 表格模板 > 合同协议

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

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