# include“l_bitmap.h”
L_LTFIL_APIL_INTL_ReadFileTags (pszFile、uFlags puTagCount、ppTags puDataSize, ppData, pLoadOptions)
得到所有的标签存储在一个文件中。
字符串包含输入文件的名字。
国旗决定是否读取标签的整体数据。在适当的时候可以结合值通过使用位或(|):
| 国旗 | 意义 |
|---|---|
| READFILEMETADATA_NOMEMORY | [0 x01]不读取标签的整体数据。如果设置了这个标志,然后puDataSize ppData将不会使用和功能不会读取标签的整体数据。 |
| 如果设置了这个标志,uDataOffset LEADFILETAG结构的成员将会充满了lData值标签。这可以用来获取抵消为标签的文件数据存储有超过4个字节的数据。 |
地址的变量更新号码的标签中找到该文件。
pLEADEADFILETAG结构的指针指向一个数组。数组的每个元素包含一个标签的数据中找到该文件。ppTags元素的数量puTagCount。这个数组时不再需要通过它L_FreeFileTags函数释放分配的内存。
变量的地址更新整个标签的大小的字节数据。
与一个指针变量的地址更新整个标签数据。字节的指针的大小puDataSize。每个LEADEADFILETAG项发现包含一个偏移量,这个项目的数据存储在ppData。
指针可选的扩展加载选项。通过零使用默认加载选项
| 价值 | 意义 |
|---|---|
| 成功 | 函数成功 |
| < 1 | 一个错误发生。指返回代码。 |
你必须免费分配这个函数使用的数据L_FreeFileTags函数。
对于一般TIFF标签信息,请参考实现TIFF评论和标签。
这个函数是非常有用的阅读标签嵌入SubIFDs。例如,有时MakerNote Exif标记包含一个SubIFD抵消。你可以使用L_ReadFileTags SubIFD抵消,并把READFILEMETADATA_NOMEMORY标签。然后可以使用获得的抵消IFD的读取数据通过设置抵消价值LOADFILEOPTION.IFD。请注意,有时这是不可能的L_ReadFileTag如果MakerNote数据标签数大于4。看下面的一个例子。
必需的dll和库
Win32 x64, Linux。
这些示例处理文件标签、评论和地理的钥匙。
/ /示例1:这个示例将阅读所有的标签、评论和geo键存储在磁盘文件中。L_INT ReadFileTagsExample1 (L_VOID){FILEINFO fi;L_INT nRet;L_UINT我uTagCount = 0, uCommentCount = 0, uGeoKeyCount = 0;pLEADFILETAG pTags = NULL, pCurrentTag pGeoKeys = NULL, pCurrentGeoKey;L_SIZE_T uTagDataSize = 0, uCommentDataSize = 0, uGeoKeyDataSize = 0;L_UCHAR * pTagData = NULL, * pCommentData = NULL, * pGeoKeyData =零;L_CHAR * pszAscii =零;pCurrentComment pLEADFILECOMMENT pComments =零;L_TCHAR szImageFileName [L_MAXPATH];lstrcpy (szImageFileName MAKE_IMAGE_PATH(文本(“ImageProcessingDemo \ \ image1.jpg”)));/ /得到文件的格式ZeroMemory (fi,运算符(FILEINFO));fi。uStructSize =运算符(FILEINFO);nRet = L_FileInfo (fi szImageFileName,运算符(FILEINFO), 0, NULL);如果(nRet ! =成功)返回nRet;/ /读文件中的所有标记如果成功(nRet = = & & L_TagsSupported (fi.Format)){/ /是的,阅读所有标签的文件nRet = L_ReadFileTags (szImageFileName,0,&uTagCount,&pTags,&uTagDataSize,&pTagData,零);}/ /读取所有文件中的注释如果成功(nRet = = & & L_CommentsSupported (fi.Format)){/ /是的,阅读所有的评论从文件nRet = L_ReadFileComments (szImageFileName,0,&uCommentCount,&pComments,&uCommentDataSize,&pCommentData,零);}/ /读取所有的geo密钥文件中如果成功(nRet = = & & L_GeoKeysSupported (fi.Format)){/ /是的,阅读所有的geo钥匙从文件nRet = L_ReadFileGeoKeys (szImageFileName,0,&uGeoKeyCount,&pGeoKeys,&uGeoKeyDataSize,&pGeoKeyData,零);}如果(nRet = =成功){如果(uTagCount > 0){/ /显示标签wprintf(左“标签\ n”);为(i = 0;我< uTagCount;我+ +){pCurrentTag = &pTags[我];/ /如果这个标签的类型是ASCII,得到数据如果(pCurrentTag - > uType = = TAG_ASCII){pszAscii = (L_CHAR *) malloc (pCurrentTag - > uDataSize + 1);ZeroMemory (pszAscii pCurrentTag - > uDataSize + 1);CopyMemory (pszAscii pTagData + pCurrentTag - > uDataOffset, pCurrentTag - > uDataSize);}其他的{pszAscii =零;}printf (“Id: 0 X % X,数据长度:% u,数据:% s \ n”、pCurrentTag - > uTag pCurrentTag - > uDataSize, pszAscii ! =零?pszAscii:“二进制数据”);}L_FreeFileTags (uTagCount pTags、uTagDataSize pTagData);}如果(uCommentCount > 0){/ /显示评论wprintf(左“评论\ n”);为(i = 0;我< uCommentCount;我+ +){pCurrentComment = &pComments[我];/ /如果这类型的评论是ASCII,得到数据printf (“Id: 0 X % X,数据长度:% u \ n”、pCurrentComment - > uType pCurrentComment - > uDataSize);}L_FreeFileComments (uCommentCount pComments、uCommentDataSize pCommentData);}如果(uGeoKeyCount > 0){/ /显示地理钥匙wprintf(左“GeoKeys \ n”);为(i = 0;我< uGeoKeyCount;我+ +){pCurrentGeoKey = &pGeoKeys[我];/ /如果这类型的地理关键是ASCII,得到数据如果(pCurrentGeoKey - > uType = = TAG_ASCII){pszAscii = (L_CHAR *) malloc (pCurrentGeoKey - > uDataSize + 1);ZeroMemory (pszAscii pCurrentGeoKey - > uDataSize + 1);CopyMemory (pszAscii pGeoKeyData + pCurrentGeoKey - > uDataOffset, pCurrentGeoKey - > uDataSize);}其他的{pszAscii =零;}printf (“Id: 0 X % X,数据长度:% u,数据:% s \ n”、pCurrentGeoKey - > uTag pCurrentGeoKey - > uDataSize, pszAscii ! =零?pszAscii:“二进制数据”);}L_FreeFileTags (uGeoKeyCount pGeoKeys、uGeoKeyDataSize pGeoKeyData);}}返回成功;}/ /示例2:这个例子将读取一个定制标记包含在一个佳能MakerNote标记。佳能MakerNote标记包含一个偏移量为一个包含Canon-specific SubIFD标签。你可以做一个web搜索“佳能makernote规范“佳能makernote标签上的细节。L_INT ReadCanonSerialNumber2 (HWND HWND, TCHAR * pszFile){/ /读取MakerNote标签/ /步骤1:找到ExifIFD标签偏移量L_UINT16 uType = TAG_LONG;L_UINT uCount = 1;L_INT nExifIFDOffset;L_INT nTagSize = L_ReadFileTag (pszFile 0 x8769、&uType &uCount, &nExifIFDOffset, NULL);如果(nTagSize ! = 4)返回-5000;/ /自定义错误:这个文件不是一个Exif文件/ /设置LOADFILEOPTION结构从Exif IFD阅读标签LOADFILEOPTION LOADFILEOPTION;L_GetDefaultLoadFileOption (&LoadFileOption运算符(LoadFileOption));LoadFileOption。IFD = nExifIFDOffset;LoadFileOption。国旗s = ELO_USEIFD;/ /步骤2:找到MakerNote标签的偏移量。用L_EnumFileTags代替L_ReadFileTag/ /因为它是唯一办法的偏移值标签有超过4个字节L_UINT uTags;LEADFILETAG * pTags;L_INT nRet = L_ReadFileTags (pszFile、READFILEMETADATA_NOMEMORY &uTags, &pTags,空,空,&LoadFileOption);如果(nRet ! =成功)返回nRet;为(使用UINT u = 0;u < uTags;u + +){如果(pTags (u)。uTag = = 0 x927c)/ / makernote标签{/ /读取makernote标签LoadFileOption。IFD = pTags [u] .uDataOffset;/ /佳能Makernote标签列出了相机序列号/ / 12相机序列号特别——显示序列号相机使用:printf (" % 04 x % 5 d ", highword, lowword)nTagSize = L_ReadFileTag (pszFile 12 &uType &uCount, NULL, &LoadFileOption);如果(nTagSize = = 4){L_UINT uSerialNumber;nTagSize = L_ReadFileTag (pszFile 12 &uType、&uCount &uSerialNumber, &LoadFileOption);如果(nTagSize = = 4){TCHAR s [50];_stprintf_s(年代,_countof (s)、文本(“% 04 x % 5 d”),HIWORD (uSerialNumber) LOWORD (uSerialNumber));对话框(hWnd,年代,文本(“序列号”),MB_OK);}}L_FreeFileTags (uTags pTags 0, NULL);返回成功;}}L_FreeFileTags (uTags pTags 0, NULL);返回-5001;/ /自定义错误:没有发现标签}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗Web查看器net
188宝金博怎么下载
支持的平台上
net, Java, Android和iOS / macOS组件
C / c++类库的API
HTML5 JavaScript库
你的邮件已经发送到支持!有人应该联系!如果你的问题是紧急请回到聊天。
聊天时间:
周一——周五,上午6点等
谢谢你的反馈!
请填写表单重新开始一个新的聊天。
所有代理目前离线。
聊天时间:
周一-周五
早上8:30 - 6点
联系我们请填写这张表格,我们将通过电子邮件联系你。
