L_ReadFileTag

# include“l_bitmap.h”

L_LTFIL_APIL_INTL_ReadFileTag(pFile, uTag, pType, pCount, pData, pLoadOptions)

从支持TIFF标记的文件中获取指定的带标记数据。使用此函数可以读取任何TIFF标记,而不仅仅是您定义的标记。

参数

L_TCHAR* pFile

包含输入文件名的字符串。

L_UINT16uTag

标记来标识数据。属性中指定的相同标记L_SetTag函数。注册标签的例子有:

价值 意义
0 x8298 版权的评论
0 x8769 Exif将军评论
0 x8825 Exif GPS评论
0 x80a4 注释TIFF标记定义为ANNTAG_TIFF。

L_UINT16* pType

要用带标记的数据类型更新的变量的地址。可能取值为:

价值 意义
TAG_BYTE [1]字节,取值范围为0 ~ 255。
TAG_ASCII [2]字节,取值范围为0 ~ 127。
TAG_SBYTE [6]字节,用作有符号数,范围为-128到+127。
TAG_UNDEFINED [7]字节,取值范围为0 ~ 255,由应用程序定义。
TAG_SHORT [3]两个字节,无符号。
TAG_SSHORT [8]两个字节,带符号。
TAG_LONG [4]四个字节,无符号。
TAG_SLONG [9]四个字节,带符号。
TAG_RATIONAL [5]八个字节,用作一对无符号长整数,其中第一个数字是分子,第二个数字是分数的分母。
TAG_SRATIONAL [10]八个字节,用作一对有符号的长整数,其中第一个数字是分子,第二个数字是分数的分母。
TAG_FLOAT [11]用作浮点数的四个字节。
TAG_DOUBLE [12]用作双精度浮点数的8个字节。
TAG_IFD [13] 32位IFD偏移量。
TAG_LONG8 [16]无符号64位整数(仅BigTIFF格式有效)。
TAG_SLONG8 [17]带符号的64位整数(仅BigTIFF格式有效)。
TAG_IFD8 [18] 64位IFD偏移量(仅对BigTIFF格式有效)。

L_UINT* pCount

要用数据项计数更新的变量的地址。计数基于标记的数据类型。例如,如果计数为2,数据类型为TAG_DOUBLE,则所需的缓冲区大小为16。

L_VOID* pData

指向要用数据更新的缓冲区的指针。传递NULL以使用该函数的返回值来确定所需的缓冲区大小。

pLOADFILEOPTIONpLoadOptions

指向可选扩展加载选项的指针。传递NULL以使用默认的加载选项。

返回

价值 意义
> 0 标记数据的长度,以字节为单位。
< = 0 发生错误。指返回代码

评论

调用这个函数两次通常很方便,如下所示:

  1. 方法中指定NULL,第一次调用该函数pData参数。使用返回值确定所需的缓冲区大小。
  2. 分配缓冲区。
  3. 第二次调用该函数,将一个指针传递给pData参数中的缓冲区。

有关TIFF标签的一般信息,请参阅实现TIFF注释和标签

该函数将读取数据大小大于4字节的标记的数据。在某些情况下,您可能希望读取数据偏移量而不是数据本身。这对于读取包含在MakerNote标记中的标记非常有用。使用L_ReadFileTags读取标记的数据偏移量。

类的FILEINFO结构可以加快读取标记的过程L_ReadFileTag2函数。

必需的dll和库

平台

Win32, x64, Linux。

另请参阅

功能

主题

例子

下面的示例使用L_ReadFileTag读取图像上公司标志位置的标记。
它从示例中为L_SetTag创建的TIFF文件中读取标记。

L_INT ReadFileTagExample (L_VOID)L_INT nRet;L_TCHAR msgbuf [80];/ *缓冲消息字符串*/L_UINT16 FillOrder = 0x010A;/*填充订单标签*/L_UINT16 TagType;/*标记的数据类型*/L_UINT32 TagCount;/*数据项个数*/L_VOID * pTagData;/*指针指向包含数据*/的缓冲区HGLOBAL hBuf;/*句柄到缓冲区*/L_INT32 BufferSize;/*需要的缓冲区大小*//*获取所需的缓冲区大小*/BufferSize = L_ReadFileTag(MAKE_IMAGE_PATH(TEXT)“OCR1.TIF”)), FillOrder, &TagType, &TagCount, NULL, NULL);/*分配并锁定缓冲区*/如果((TagType == TAG_SHORT) && (BufferSize > 0))hBuf = GlobalAlloc(GMEM_MOVEABLE, BufferSize);pTagData = GlobalLock(hBuf);其他的返回BufferSize;/*获取标记数据*/L_ReadFileTag(MAKE_IMAGE_PATH(TEXT)“OCR1.TIF”)), FillOrder, &TagType, &TagCount, pTagData, NULL);如果(nRet <= 0)返回nRet;/*显示数据*/如果((TagType == TAG_SHORT) && (TagCount == 1))wsprintf (msgbuf文本("FillOrder = 0x%02X"), () * (L_INT *) pTagData);消息框(NULL, msgbuf, TEXT(“填补秩序”), MB_OK);/ /我们不再需要的内存GlobalUnlock (hBuf);GlobalFree (hBuf);返回成功;

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。