Extends the RasterMetadata class to provide functionality for dealing with tag metadata stored within various image file formats.
[SerializableAttribute()]public class RasterTagMetadata : RasterMetadata
<SerializableAttribute()>Public Class RasterTagMetadataInherits RasterMetadata
@interface LTRasterTagMetadata : LTRasterMetadata public class RasterTagMetadata extends RasterMetadata implements Serializable [SerializableAttribute()]public ref class RasterTagMetadata : public RasterMetadata
The TIFF file formats support a number of comments that are saved and loaded using predefined tags.
If the comments do not meet your needs, you can define your own tag for saving additional non-raster data in a TIFF file. For example, you may want to define a tag to save annotations.
The TIFF 6.0 Specification sets aside a range of private tags that developers can define. To avoid conflicts with files created by other developers, you can register your tag by contacting Adobe Developer Relations. The E-Mail address posted on The Unofficial TIFF Home Page is [email protected].
Some restrictions apply to this function if you use an IFD to indicate to which page to write the metadata. See the Loading And Saving Large TIFF Files topic for more information.
This example will save then load some tags to/from a tif file.
using Leadtools;using Leadtools.Codecs;using LeadtoolsExamples.Common;public void RasterTagMetadataExample(){RasterCodecs codecs = new RasterCodecs();codecs.ThrowExceptionsOnInvalidImages = true;string srcFileName = Path.Combine(ImagesPath.Path, "Image1.cmp");string destFileName = Path.Combine(ImagesPath.Path, "Image1_tags.tif");// Load the imageRasterImage image = codecs.Load(srcFileName);// add the tagsconst int tagSoftware = 0x8001;RasterTagMetadata tag;// Asciitag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Ascii;tag.FromAscii("Test String");image.Tags.Add(tag);// Bytetag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Byte;byte[] byteArray = new byte[1];byteArray[0] = 10;tag.FromByte(byteArray);image.Tags.Add(tag);// SBytetag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.SByte;sbyte[] sbyteArray = new sbyte[1];sbyteArray[0] = -45;tag.FromSByte(sbyteArray);image.Tags.Add(tag);// Int16tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Int16;short[] shortArray = new short[1];shortArray[0] = 64;tag.FromInt16(shortArray);image.Tags.Add(tag);// Uint16tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.UInt16;ushort[] uint16Array = new ushort[1];uint16Array[0] = 50;tag.FromUInt16(uint16Array);image.Tags.Add(tag);// Int32tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Int32;int[] intArray = new int[1];intArray[0] = -1326;tag.FromInt32(intArray);image.Tags.Add(tag);// Uint32tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.UInt32;uint[] uintArray = new uint[1];uintArray[0] = 1326;tag.FromUInt32(uintArray);image.Tags.Add(tag);// singletag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Single;float[] singleArray = new float[1];singleArray[0] = 4.53f;tag.FromSingle(singleArray);image.Tags.Add(tag);// Doubletag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Double;double[] doubleArray = new double[1];doubleArray[0] = 7.1;tag.FromDouble(doubleArray);image.Tags.Add(tag);// Rationaltag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Rational;RasterMetadataRational[] rational = new RasterMetadataRational[1];rational[0] = new RasterMetadataRational();rational[0].Numerator = 3;rational[0].Denominator = 2;tag.FromRational(rational);image.Tags.Add(tag);// URationaltag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.URational;RasterMetadataURational[] urational = new RasterMetadataURational[1];urational[0] = new RasterMetadataURational(3, 2);tag.FromURational(urational);image.Tags.Add(tag);// Save the image and its tags to the destination tiff filecodecs.Options.Save.Tags = true;codecs.Save(image, destFileName, RasterImageFormat.Tif, 1);// Enumerate the tags from the filecodecs.TagFound += new EventHandler<CodecsEnumTagsEventArgs>(codecs_TagFound);codecs.EnumTags(destFileName, 1);// clean upimage.Dispose();codecs.Dispose();}void codecs_TagFound(object sender, CodecsEnumTagsEventArgs e){Console.WriteLine("Found tag id = {0}, count = {1}, type = {2}", e.Id, e.Count, e.MetadataType);}
Imports LeadtoolsImports Leadtools.CodecsPublic Sub RasterTagMetadataExample()Dim codecs As RasterCodecs = New RasterCodecs()codecs.ThrowExceptionsOnInvalidImages = TrueDim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp")Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1_tags.tif")' Load the imageDim image As RasterImage = codecs.Load(srcFileName)' add the tagsConst tagSoftware As Integer = &H8001Dim tag As RasterTagMetadata' Asciitag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.Asciitag.FromAscii("Test String")image.Tags.Add(tag)' Bytetag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.ByteDim byteArray As Byte() = New Byte(0) {}byteArray(0) = 10tag.FromByte(byteArray)image.Tags.Add(tag)' SBytetag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.SByteDim sbyteArray As SByte() = New SByte(0) {}sbyteArray(0) = -45tag.FromSByte(sbyteArray)image.Tags.Add(tag)' Int16tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.Int16Dim shortArray As Short() = New Short(0) {}shortArray(0) = 64tag.FromInt16(shortArray)image.Tags.Add(tag)' Uint16tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.UInt16Dim uint16Array As System.UInt16() = New System.UInt16(0) {}uint16Array(0) = 50tag.FromUInt16(uint16Array)image.Tags.Add(tag)' Int32tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.Int32Dim intArray As Integer() = New Integer(0) {}intArray(0) = -1326tag.FromInt32(intArray)image.Tags.Add(tag)' Uint32tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.UInt32Dim uintArray As System.UInt32() = New System.UInt32(0) {}uintArray(0) = 1326tag.FromUInt32(uintArray)image.Tags.Add(tag)' singletag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.SingleDim singleArray As Single() = New Single(0) {}singleArray(0) = 4.53Ftag.FromSingle(singleArray)image.Tags.Add(tag)' Doubletag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.DoubleDim doubleArray As Double() = New Double(0) {}doubleArray(0) = 7.1tag.FromDouble(doubleArray)image.Tags.Add(tag)' Rationaltag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.RationalDim rational As RasterMetadataRational() = New RasterMetadataRational(0) {}rational(0) = New RasterMetadataRational()rational(0).Numerator = 3rational(0).Denominator = 2tag.FromRational(rational)image.Tags.Add(tag)' URationaltag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.URationalDim urational As RasterMetadataURational() = New RasterMetadataURational(0) {}urational(0) = New RasterMetadataURational(3, 2)tag.FromURational(urational)image.Tags.Add(tag)' Save the image and its tags to the destination tiff filecodecs.Options.Save.Tags = Truecodecs.Save(image, destFileName, RasterImageFormat.Tif, 1)' Enumerate the tags from the fileAddHandler codecs.TagFound, AddressOf codecs_TagFoundcodecs.EnumTags(destFileName, 1)' clean upimage.Dispose()End SubPrivate Sub codecs_TagFound(ByVal sender As Object, ByVal e As CodecsEnumTagsEventArgs)Console.WriteLine("Found tag id = {0}, count = {1}, type = {2}", e.Id, e.Count, e.MetadataType)End SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"End Class
c#[Silverlight C# Example]using Leadtools;using Leadtools.Codecs;using Leadtools.Examples;using Leadtools.ImageProcessing;public void RasterTagMetadataExample(RasterImage image, Stream destStream){RasterCodecs codecs = new RasterCodecs();// add the tagsconst int tagSoftware = 0x8001;RasterTagMetadata tag;// Asciitag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Ascii;tag.FromAscii("Test String");image.Tags.Add(tag);// Bytetag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Byte;byte[] byteArray = new byte[1];byteArray[0] = 10;tag.FromByte(byteArray);image.Tags.Add(tag);// SBytetag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.SByte;sbyte[] sbyteArray = new sbyte[1];sbyteArray[0] = -45;tag.FromSByte(sbyteArray);image.Tags.Add(tag);// Int16tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Int16;short[] shortArray = new short[1];shortArray[0] = 64;tag.FromInt16(shortArray);image.Tags.Add(tag);// Uint16tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.UInt16;ushort[] uint16Array = new ushort[1];uint16Array[0] = 50;tag.FromUInt16(uint16Array);image.Tags.Add(tag);// Int32tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Int32;int[] intArray = new int[1];intArray[0] = -1326;tag.FromInt32(intArray);image.Tags.Add(tag);// Uint32tag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.UInt32;uint[] uintArray = new uint[1];uintArray[0] = 1326;tag.FromUInt32(uintArray);image.Tags.Add(tag);// singletag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Single;float[] singleArray = new float[1];singleArray[0] = 4.53f;tag.FromSingle(singleArray);image.Tags.Add(tag);// Doubletag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Double;double[] doubleArray = new double[1];doubleArray[0] = 7.1;tag.FromDouble(doubleArray);image.Tags.Add(tag);// Rationaltag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.Rational;RasterMetadataRational[] rational = new RasterMetadataRational[1];rational[0] = new RasterMetadataRational();rational[0].Numerator = 3;rational[0].Denominator = 2;tag.FromRational(rational);image.Tags.Add(tag);// URationaltag = new RasterTagMetadata();tag.Id = tagSoftware;tag.DataType = RasterTagMetadataDataType.URational;RasterMetadataURational[] urational = new RasterMetadataURational[1];urational[0] = new RasterMetadataURational(3, 2);tag.FromURational(urational);image.Tags.Add(tag);// Save the image and its tags to the destination tiff filecodecs.Options.Save.Tags = true;codecs.Save(image, destStream, RasterImageFormat.Tif, 1);// Enumerate the tags from the filecodecs.TagFound += new EventHandler<CodecsEnumTagsEventArgs>(codecs_TagFound);codecs.EnumTags(destStream, 1);// clean upimage.Dispose();}void codecs_TagFound(object sender, CodecsEnumTagsEventArgs e){Debug.WriteLine("Found tag id = {0}, count = {1}, type = {2}", e.Id, e.Count, e.MetadataType);}vb[Silverlight VB Example]Imports LeadtoolsImports Leadtools.CodecsImports Leadtools.ImageProcessingPublic Sub RasterTagMetadataExample(ByVal image As RasterImage, ByVal destStream As Stream)Dim codecs As RasterCodecs = New RasterCodecs()' add the tagsConst tagSoftware As Integer = &H8001Dim tag As RasterTagMetadata' Asciitag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.Asciitag.FromAscii("Test String")image.Tags.Add(tag)' Bytetag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.ByteDim byteArray As Byte() = New Byte(0) {}byteArray(0) = 10tag.FromByte(byteArray)image.Tags.Add(tag)' SBytetag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.SByteDim sbyteArray As SByte() = New SByte(0) {}sbyteArray(0) = -45tag.FromSByte(sbyteArray)image.Tags.Add(tag)' Int16tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.Int16Dim shortArray As Short() = New Short(0) {}shortArray(0) = 64tag.FromInt16(shortArray)image.Tags.Add(tag)' Uint16tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.UInt16Dim uint16Array As UShort() = New UShort(0) {}uint16Array(0) = 50tag.FromUInt16(uint16Array)image.Tags.Add(tag)' Int32tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.Int32Dim intArray As Integer() = New Integer(0) {}intArray(0) = -1326tag.FromInt32(intArray)image.Tags.Add(tag)' Uint32tag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.UInt32Dim uintArray As UInteger() = New UInteger(0) {}uintArray(0) = 1326tag.FromUInt32(uintArray)image.Tags.Add(tag)' singletag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.SingleDim singleArray As Single() = New Single(0) {}singleArray(0) = 4.53Ftag.FromSingle(singleArray)image.Tags.Add(tag)' Doubletag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.DoubleDim doubleArray As Double() = New Double(0) {}doubleArray(0) = 7.1tag.FromDouble(doubleArray)image.Tags.Add(tag)' Rationaltag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.RationalDim rational As RasterMetadataRational() = New RasterMetadataRational(0) {}rational(0) = New RasterMetadataRational()rational(0).Numerator = 3rational(0).Denominator = 2tag.FromRational(rational)image.Tags.Add(tag)' URationaltag = New RasterTagMetadata()tag.Id = tagSoftwaretag.DataType = RasterTagMetadataDataType.URationalDim urational As RasterMetadataURational() = New RasterMetadataURational(0) {}urational(0) = New RasterMetadataURational(3, 2)tag.FromURational(urational)image.Tags.Add(tag)' Save the image and its tags to the destination tiff filecodecs.Options.Save.Tags = Truecodecs.Save(image, destStream, RasterImageFormat.Tif, 1)' Enumerate the tags from the fileAddHandler codecs.TagFound, AddressOf codecs_TagFoundcodecs.EnumTags(destStream, 1)' clean upimage.Dispose()End SubPrivate Sub codecs_TagFound(ByVal sender As Object, ByVal e As CodecsEnumTagsEventArgs)Debug.WriteLine("Found tag id = {0}, count = {1}, type = {2}", e.Id, e.Count, e.MetadataType)End Sub
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
