Leadtools.Codecs Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
Tags Property
See Also  Example
Leadtools.Codecs Namespace > CodecsLoadOptions Class : Tags Property



Gets or sets a value that indicate whether any tags found in the file should be automatically loaded.

Syntax

Visual Basic (Declaration) 
Public Property Tags As Boolean
Visual Basic (Usage)Copy Code
Dim instance As CodecsLoadOptions
Dim value As Boolean
 
instance.Tags = value
 
value = instance.Tags
C# 
public bool Tags {get; set;}
C++/CLI 
public:
property bool Tags {
   bool get();
   void set (bool value);
}

Return Value

true to automatically load any tags found in the file; otherwise it is false.

Example

This example will browse to a file and load it along with any tags, geo-keys and comments found.

Visual BasicCopy Code
Public Sub MetadataAutoLoadExample()
   ' Prompt the user for an image file
   Dim imageFileName As String
   Using dlg As New OpenFileDialog()
      dlg.Title = "Browse to file to load its meta data"
      dlg.Filter = "All Files|*.*"
      dlg.InitialDirectory = "C:\Users\Public\Documents\LEADTOOLS Images"
      If dlg.ShowDialog() = DialogResult.OK Then
         imageFileName = dlg.FileName
      Else
         Return
      End If
   End Using

   ' Initialize LEADTOOLS
   RasterCodecs.Startup()
   Using codecs As New RasterCodecs()
      Dim loadOptions As CodecsLoadOptions = codecs.Options.Load

      ' Make sure auto-loading of markers is turned off, otherwise,
      ' markers take precedence over loading the other metadata
      loadOptions.Markers = False

      ' Automatically load any tags, comments and geokeys found in this file
      loadOptions.Tags = True
      loadOptions.Comments = True
      loadOptions.GeoKeys = True

      ' Now load the image
      Using image As RasterImage = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)
         Dim txtFileName As String = Path.Combine( _
            Path.GetDirectoryName(imageFileName), _
            Path.GetFileNameWithoutExtension(imageFileName) + "_metadata.txt")

         Using writer As StreamWriter = File.CreateText(txtFileName)
            ' Show its tags
            ShowTags(writer, "Tags", image.Tags)

            ' Show its comments
            ShowComments(writer, image.Comments)

            ' Show its geo keys (tags and geokeys use the same data type)
            ShowTags(writer, "GeoKeys", image.GeoKeys)
         End Using

         ' Show the text file we created
         System.Diagnostics.Process.Start(txtFileName)
      End Using
   End Using
   RasterCodecs.Shutdown()
End Sub

Private Shared Sub ShowTags(ByVal writer As StreamWriter, ByVal name As String, ByVal tags As RasterCollection(Of RasterTagMetadata))
   writer.WriteLine("{0}:", name)

   For Each tag As RasterTagMetadata In tags
      writer.WriteLine("Id: 0x{0}, data length: {1}", tag.Id.ToString("X"), tag.GetData().Length)
   Next

   writer.WriteLine()
End Sub

Private Shared Sub ShowComments(ByVal writer As StreamWriter, ByVal comments As RasterCollection(Of RasterCommentMetadata))
   writer.WriteLine("Comments:")

   For Each comment As RasterCommentMetadata In comments
      writer.WriteLine("Type: 0x{0}, data length: {1}", comment.Type, comment.GetData().Length)
   Next

   writer.WriteLine()
End Sub
C#Copy Code
public void MetadataAutoLoadExample() 

   // Prompt the user for an image file 
   string imageFileName; 
   using(OpenFileDialog dlg = new OpenFileDialog()) 
   { 
      dlg.Title = "Browse to file to load its meta data"; 
      dlg.Filter = "All Files|*.*"; 
      dlg.InitialDirectory = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
      if(dlg.ShowDialog() == DialogResult.OK) 
         imageFileName = dlg.FileName; 
      else 
         return; 
   } 
 
   // Initialize LEADTOOLS 
   RasterCodecs.Startup(); 
   using(RasterCodecs codecs = new RasterCodecs()) 
   { 
      CodecsLoadOptions loadOptions = codecs.Options.Load; 
 
      // Make sure auto-loading of markers is turned off, otherwise, 
      // markers take precedence over loading the other metadata 
      loadOptions.Markers = false; 
 
      // Automatically load any tags, comments and geokeys found in this file 
      loadOptions.Tags = true; 
      loadOptions.Comments = true; 
      loadOptions.GeoKeys = true; 
 
      // Now load the image 
      using(RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)) 
      { 
         string txtFileName = Path.Combine( 
            Path.GetDirectoryName(imageFileName), 
            Path.GetFileNameWithoutExtension(imageFileName) + "_metadata.txt"); 
 
         using(StreamWriter writer = File.CreateText(txtFileName)) 
         { 
            // Show its tags 
            ShowTags(writer, "Tags", image.Tags); 
 
            // Show its comments 
            ShowComments(writer, image.Comments); 
 
            // Show its geo keys (tags and geokeys use the same data type) 
            ShowTags(writer, "GeoKeys", image.GeoKeys); 
         } 
 
         // Show the text file we created 
         System.Diagnostics.Process.Start(txtFileName); 
      } 
   } 
   RasterCodecs.Shutdown(); 

 
private static void ShowTags(StreamWriter writer, string name, RasterCollection<RasterTagMetadata> tags) 

   writer.WriteLine("{0}:", name); 
 
   foreach(RasterTagMetadata tag in tags) 
   { 
      writer.WriteLine("Id: 0x{0}, data length: {1}", tag.Id.ToString("X"), tag.GetData().Length); 
   } 
 
   writer.WriteLine(); 

 
private static void ShowComments(StreamWriter writer, RasterCollection<RasterCommentMetadata> comments) 

   writer.WriteLine("Comments:"); 
 
   foreach(RasterCommentMetadata comment in comments) 
   { 
      writer.WriteLine("Type: 0x{0}, data length: {1}", comment.Type, comment.GetData().Length); 
   } 
 
   writer.WriteLine(); 
}

Remarks

When the value of the Tags property is set to true, any subsequent load operation performed by this RasterCodecs object will automatically try to load all the tags found in the file and store them in the RasterImage.Tags collection of the result image.

Internally, the RasterCodecs object will call RasterCodecs.TagsSupported on the image and only tries to load the tags if the value returned was true.

When loading more than one page from a multi-page file, only the tags found in the first page will be automatically loaded when the value of this property is set to true. To manually load all the tags in any page, use RasterCodecs.ReadTags(String,Int32).

You must set the value of the Markers property to false to enable automatically loading the tags. If the value of both Markers and Tags is set to true, then the markers will take take precedence and no tags will be loaded.

Note that any load method that uses tiles, offset or resizing will not load any file metadata automatically regardless of the value of this property.

Requirements

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

See Also