Specifies a private tag and the tagged data to be saved in a TIFF file.
#include "l_bitmap.h"
L_LTFIL_API L_INT L_SetTag(uTag, uType, uCount, pData)
Tag to identify the data in the TIFF file. Generally, you can specify a private tag in the range of 0x8000 to 0xFFFE. However, LEADTOOLS returns an error if you use any of the following registered tags:
Value | Meaning |
---|---|
0x8298 | Copyright comment |
0x8769 | General Exif comments |
0x8825 | Exif GPS comments |
Value | Meaning |
---|---|
0x80A4 | Annotation TIFF tag defined as ANNTAG_TIFF. |
Tagged data type. Valid values are:
Value | Meaning |
---|---|
TAG_BYTE | [1] Byte. |
TAG_ASCII | [2] Byte in the range of 0 to 255. |
TAG_SBYTE | [6] Byte used as signed number in the range of -128 to +127. |
TAG_UNDEFINED | [7] Byte, with application-defined usage. |
TAG_SHORT | [3] Two bytes, unsigned. |
TAG_SSHORT | [8] Two bytes, signed. |
TAG_LONG | [4] Four bytes, unsigned. |
TAG_SLONG | [9] Four bytes, signed. |
TAG_RATIONAL | [5] Eight bytes, used as a pair of unsigned long integers, where the first number is the numerator and the second is the denominator of a fraction. |
TAG_SRATIONAL | [10] Eight bytes, used as a pair of signed long integers, where the first number is the numerator and the second is the denominator of a fraction. |
TAG_FLOAT | [11] Four bytes used as a floating point number. |
TAG_DOUBLE | [12] Eight bytes used as a double-precision floating point number. |
TAG_IFD | [13] 32-bit IFD offset. |
TAG_LONG8 | [16] Unsigned 64-bit integer (valid only for BigTIFF formats). |
TAG_SLONG8 | [17] Signed 64-bit integer (valid only for BigTIFF formats). |
TAG_IFD8 | [18] 64-bit IFD offset (valid only for BigTIFF formats). |
Count of data items, based on the tagged data type. For example, if the buffer size is 16 and the data type is TAG_DOUBLE, the count is 2.
Pointer to a buffer containing the data to be saved using the tag.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
This function copies the data from your buffer to an internally-allocated buffer. You should free your own buffer after calling this function. Any TIFF file that you save will include the tagged data until you clear the tag. LEADTOOLS keeps a list of tags in memory. The list contains all the tags set directly (by calling L_SetTag) or indirectly (by calling L_AnnSaveTag). All these tags will be saved unless you clear them. The way to clear a tag and remove it from the list is by calling L_SetTag(uTag, 0, 0, NULL). L_SetTag(0,0,0,NULL) will remove ALL the tags from the tag list.
For general information about TIFF tags, refer to Implementing TIFF Comments and Tags.
Notes:
When LEADTOOLS saves a TIFF/Exif image that contains comments and tags, the comments and tags will be written first, followed by the image data. This order is not configurable.
To write tags to a TIFF file, use L_WriteFileTag or L_WriteFileTagMemory instead of using L_SetTag followed by L_SaveFile or L_SaveFileMemory.
Win32, x64, Linux.
This example specifies a tag for recording the position of a company logo on the image.
It sets the tag with L_SetTag; tests the tag with L_GetTag; then saves a TIFF file with the new tag.
For an example that reads this same tag from the file, refer to L_ReadFileTag.
L_INT SetTagExample(pBITMAPHANDLE pBitmap)
{
L_INT nRet;
L_TCHAR msgbuf[80]; /* buffer for the message string */
L_UINT16 LogoPosition = 0x8001; /* my private tag */
L_UINT16 TagType = TAG_SSHORT; /* tagged data type */
L_UINT32 TagCount = 4; /* count of data items */
L_INT TagData[] = {5, 5, 24, 37};
L_VOID * pTagData = &TagData; /* pointer to the buffer containing the data */
/* Set the tag data to be saved */
nRet = L_SetTag(LogoPosition, TagType, TagCount, pTagData);
if(nRet != SUCCESS)
return nRet;
/* Clear the variables so that we can validate the data */
TagType = 0;
TagCount = 0;
TagData[0] = 0;
TagData[1] = 0;
TagData[2] = 0;
TagData[3] = 0;
/* Get the tag data that is ready to be saved */
nRet = L_GetTag(LogoPosition, &TagType, &TagCount, pTagData);
if(nRet < SUCCESS)
return nRet;
/* Display a message showing the data */
if ((TagType == TAG_SSHORT) && (TagCount == 4))
{
wsprintf(msgbuf, TEXT("X = %d\nY= %d\nWidth = %d\nHeight = %d"),
((L_INT *)pTagData)[0],
((L_INT *)pTagData)[1],
((L_INT *)pTagData)[2],
((L_INT *)pTagData)[3]);
MessageBox (NULL, msgbuf, TEXT("Logo Position"), MB_OK);
}
/* Save the file with the tag */
nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("TEST.TIF")), pBitmap, FILE_TIF, pBitmap->BitsPerPixel, 0, NULL);
if(nRet != SUCCESS)
return nRet;
/* Clear the tag from memory */
nRet = L_SetTag(0, 0, 0, NULL);
return SUCCESS;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document