Extends the
RasterMetadata class to provide functionality for dealing with tag metadata stored within various image file formats.
Syntax
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"
Dim image As RasterImage = codecs.Load(srcFileName)
Const tagSoftware As Integer = &H131
Dim tag As RasterTagMetadata
tag = New RasterTagMetadata() tag.Id = tagSoftware tag.DataType = RasterTagMetadataDataType.Ascii tag.FromAscii("Test String") image.Tags.Add(tag)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
codecs.Options.Save.Tags = True codecs.Save(image, destFileName, RasterImageFormat.Tif, 1)
AddHandler codecs.TagFound, AddressOf codecs_TagFound codecs.EnumTags(destFileName, 1)
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
Inheritance Hierarchy
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also