Leadtools Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
RasterTagMetadata Class
See Also  Members   Example 
Leadtools Namespace : RasterTagMetadata Class



Extends the RasterMetadata class to provide functionality for dealing with tag metadata stored within various image file formats.

Syntax

Visual Basic (Declaration)  
<SerializableAttribute()>
Public Class RasterTagMetadata 
   Inherits RasterMetadata
Visual Basic (Usage) Copy Code
Dim instance As RasterTagMetadata
C#  
[SerializableAttribute()]
public class RasterTagMetadata : RasterMetadata 
C++/CLI  
[SerializableAttribute()]
public ref class RasterTagMetadata : public RasterMetadata 

Example

This example will save then load some tags to/from a tif file.

Visual Basic Copy Code
Public Sub RasterTagMetadataExample()
 RasterCodecs.Startup()
 Dim codecs As RasterCodecs = New RasterCodecs()
 codecs.ThrowExceptionsOnInvalidImages = True

 Dim srcFileName As String = LeadtoolsExamples.Common.ImagesPath.Path
 Dim destFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_tags.tif"

 ' Load the image
 Dim image As RasterImage = codecs.Load(srcFileName)

 ' add the tags
 Const tagSoftware As Integer = &H131

 Dim tag As RasterTagMetadata

 ' Ascii
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.Ascii
 tag.FromAscii("Test String")
 image.Tags.Add(tag)

 ' Byte
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.Byte
 Dim byteArray As Byte() = New Byte(0) {}
 byteArray(0) = 10
 tag.FromByte(byteArray)
 image.Tags.Add(tag)

 ' SByte
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.SByte
 Dim sbyteArray As SByte() = New SByte(0) {}
 sbyteArray(0) = -45
 tag.FromSByte(sbyteArray)
 image.Tags.Add(tag)

 ' Int16
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.Int16
 Dim shortArray As Short() = New Short(0) {}
 shortArray(0) = 64
 tag.FromInt16(shortArray)
 image.Tags.Add(tag)

 ' Uint16
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.UInt16
 Dim uint16Array As System.UInt16() = New System.UInt16(0) {}
 uint16Array(0) = 50
 tag.FromUInt16(uint16Array)
 image.Tags.Add(tag)

 ' Int32
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.Int32
 Dim intArray As Integer() = New Integer(0) {}
 intArray(0) = -1326
 tag.FromInt32(intArray)
 image.Tags.Add(tag)

 ' Uint32
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.UInt32
 Dim uintArray As System.UInt32() = New System.UInt32(0) {}
 uintArray(0) = 1326
 tag.FromUInt32(uintArray)
 image.Tags.Add(tag)

 ' single
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.Single
 Dim singleArray As Single() = New Single(0) {}
 singleArray(0) = 4.53F
 tag.FromSingle(singleArray)
 image.Tags.Add(tag)

 ' Double
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.Double
 Dim doubleArray As Double() = New Double(0) {}
 doubleArray(0) = 7.1
 tag.FromDouble(doubleArray)
 image.Tags.Add(tag)

 ' Rational
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.Rational
 Dim rational As RasterMetadataRational() = New RasterMetadataRational(0) {}
 rational(0) = New RasterMetadataRational()
 rational(0).Numerator = 3
 rational(0).Denominator = 2
 tag.FromRational(rational)
 image.Tags.Add(tag)

 ' URational
 tag = New RasterTagMetadata()
 tag.Id = tagSoftware
 tag.DataType = RasterTagMetadataDataType.URational
 Dim 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 file
 codecs.Options.Save.Tags = True
 codecs.Save(image, destFileName, RasterImageFormat.Tif, 1)

 ' Enumerate the tags from the file
 AddHandler codecs.TagFound, AddressOf codecs_TagFound
 codecs.EnumTags(destFileName, 1)

 ' clean up
 image.Dispose()
 RasterCodecs.Shutdown()
      End Sub

      Private 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 Sub
C# Copy Code
public void RasterTagMetadataExample() 

   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   string srcFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp"; 
   string destFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_tags.tif"; 
 
   // Load the image 
   RasterImage image = codecs.Load(srcFileName); 
 
   // add the tags 
   const int tagSoftware = 0x131; 
 
   RasterTagMetadata tag; 
 
   // Ascii 
   tag = new RasterTagMetadata(); 
   tag.Id = tagSoftware; 
   tag.DataType = RasterTagMetadataDataType.Ascii; 
   tag.FromAscii("Test String"); 
   image.Tags.Add(tag); 
 
   // Byte 
   tag = new RasterTagMetadata(); 
   tag.Id = tagSoftware; 
   tag.DataType = RasterTagMetadataDataType.Byte; 
   byte[] byteArray = new byte[1]; 
   byteArray[0] = 10; 
   tag.FromByte(byteArray); 
   image.Tags.Add(tag); 
 
   // SByte 
   tag = new RasterTagMetadata(); 
   tag.Id = tagSoftware; 
   tag.DataType = RasterTagMetadataDataType.SByte; 
   sbyte[] sbyteArray = new sbyte[1]; 
   sbyteArray[0] = -45; 
   tag.FromSByte(sbyteArray); 
   image.Tags.Add(tag); 
 
   // Int16 
   tag = new RasterTagMetadata(); 
   tag.Id = tagSoftware; 
   tag.DataType = RasterTagMetadataDataType.Int16; 
   short[] shortArray = new short[1]; 
   shortArray[0] = 64; 
   tag.FromInt16(shortArray); 
   image.Tags.Add(tag); 
 
   // Uint16 
   tag = new RasterTagMetadata(); 
   tag.Id = tagSoftware; 
   tag.DataType = RasterTagMetadataDataType.UInt16; 
   ushort[] uint16Array = new ushort[1]; 
   uint16Array[0] = 50; 
   tag.FromUInt16(uint16Array); 
   image.Tags.Add(tag); 
 
   // Int32 
   tag = new RasterTagMetadata(); 
   tag.Id = tagSoftware; 
   tag.DataType = RasterTagMetadataDataType.Int32; 
   int[] intArray = new int[1]; 
   intArray[0] = -1326; 
   tag.FromInt32(intArray); 
   image.Tags.Add(tag); 
 
   // Uint32 
   tag = new RasterTagMetadata(); 
   tag.Id = tagSoftware; 
   tag.DataType = RasterTagMetadataDataType.UInt32; 
   uint[] uintArray = new uint[1]; 
   uintArray[0] = 1326; 
   tag.FromUInt32(uintArray); 
   image.Tags.Add(tag); 
 
   // single 
   tag = 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); 
 
   // Double 
   tag = 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); 
 
   // Rational 
   tag = 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); 
 
   // URational 
   tag = 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 file 
   codecs.Options.Save.Tags = true; 
   codecs.Save(image, destFileName, RasterImageFormat.Tif, 1); 
 
   // Enumerate the tags from the file 
   codecs.TagFound += new EventHandler<CodecsEnumTagsEventArgs>(codecs_TagFound); 
   codecs.EnumTags(destFileName, 1); 
 
   // clean up 
   image.Dispose(); 
   RasterCodecs.Shutdown(); 

 
void codecs_TagFound(object sender, CodecsEnumTagsEventArgs e) 

   Console.WriteLine("Found tag id = {0}, count = {1}, type = {2}", e.Id, e.Count, e.MetadataType); 
}

Remarks

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 gapdevsup@adobe.com.

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.

Inheritance Hierarchy

System.Object
   Leadtools.RasterMetadata
      Leadtools.RasterTagMetadata

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family

See Also