LEADTOOLS Image File Support (Leadtools.Codecs assembly)
LEAD Technologies, Inc

ReadTagsWithOffsetsAsync Method

Example 





A Leadtools.ILeadStream containing the input image data.
1-based index of the page from which to read the tags.
An array that contains the offsets for each tag.
Reads all the tags stored in a TIFF file, along with the offsets for each tag. .NET support WinRT support
Syntax
public IAsyncOperation<IVector<RasterTagMetadata>> ReadTagsWithOffsetsAsync( 
   ILeadStream stream,
   int pageNumber,
   IVector<long> offsets
)
'Declaration
 
Public Function ReadTagsWithOffsetsAsync( _
   ByVal stream As ILeadStream, _
   ByVal pageNumber As Integer, _
   ByVal offsets As IVector(Of Long) _
) As IAsyncOperation(Of IVector(Of RasterTagMetadata))
'Usage
 
Dim instance As RasterCodecs
Dim stream As ILeadStream
Dim pageNumber As Integer
Dim offsets As IVector(Of Long)
Dim value As IAsyncOperation(Of IVector(Of RasterTagMetadata))
 
value = instance.ReadTagsWithOffsetsAsync(stream, pageNumber, offsets)
public IAsyncOperation<IVector<RasterTagMetadata>> ReadTagsWithOffsetsAsync( 
   ILeadStream stream,
   int pageNumber,
   IVector<long> offsets
)
 function Leadtools.Codecs.RasterCodecs.ReadTagsWithOffsetsAsync( 
   stream ,
   pageNumber ,
   offsets 
)
public:
IAsyncOperation<IVector<RasterTagMetadata^>^>^ ReadTagsWithOffsetsAsync( 
   ILeadStream^ stream,
   int pageNumber,
   IVector<int64>^ offsets
) 

Parameters

stream
A Leadtools.ILeadStream containing the input image data.
pageNumber
1-based index of the page from which to read the tags.
offsets
An array that contains the offsets for each tag.

Return Value

When this method completes, it returns a collection of Leadtools.RasterTagMetadata containing all the tags found in the file. If the file does not contain any tags, an empty collection will be returned. If the file format does not support tags, an exception will be thrown.
Remarks

To read a specific tag stored in a file, use ReadTag(String,Int32,Int32) and to enumerate all the tag ids (but not the data) stored in a file use EnumTags(String,Int32).

This method will throw an exception if the file format does not support tags. To determine whether a file format supports tags, use TagsSupported. You can also automatically load all the tags stored in a file during a load operation by setting the CodecsLoadOptions.Tags property to true. The tags data will be stored in the resulting image RasterImage.Tags collection.

To load all the tags stored in a disk file, use ReadTags(String,Int32).

Example
 
Private Shared Sub ReadTagsWithOffsetsExample()
   ' Prompt the user for an image file
   Dim imageFileName As String = PromptForFileName()
   ' Initialize LEADTOOLS
   Using codecs As New RasterCodecs()
      ' Get the file format
      Dim format As RasterImageFormat

      Using info As CodecsImageInfo = codecs.GetInformation(imageFileName, False)
         format = info.Format
      End Using

      ' Load the tags, with their offsets
      Dim tags As RasterCollection(Of RasterTagMetadata) = Nothing
      Dim offsets As Long() = Nothing
      If RasterCodecs.TagsSupported(format) Then
         tags = codecs.ReadTagsWithOffsets(imageFileName, 1, offsets)
      End If

      Dim txtFileName As String = Path.Combine( _
         Path.GetDirectoryName(imageFileName), _
         Path.GetFileNameWithoutExtension(imageFileName) + "_metadata.txt")

      Using writer As StreamWriter = File.CreateText(txtFileName)
         ' Write the tags
         WriteTags(writer, "Tags", tags, offsets)
      End Using

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

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

   If Not IsNothing(tags) Then
      Dim x As Integer = 0
      For Each tag As RasterTagMetadata In tags
         writer.WriteLine("Id: 0x{0}, offset: {1}", tag.Id.ToString("X"), offsets(x))
         x = x + 1
      Next
   Else
      writer.WriteLine("Not supported")
   End If

   writer.WriteLine()
End Sub
public void ReadTagsWithOffsetsExample()
{
    // Prompt the user for an image file
    string imageFileName = PromptForFileName();
    // Initialize LEADTOOLS
    using (RasterCodecs codecs = new RasterCodecs())
    {
        // Get the file format
        RasterImageFormat format;

        using (CodecsImageInfo info = codecs.GetInformation(imageFileName, false))
        {
            format = info.Format;
        }

        // Load the tags, with their offsets
        RasterCollection<RasterTagMetadata> tags = null;
        long[] offsets = null;
        if (RasterCodecs.TagsSupported(format))
            tags = codecs.ReadTagsWithOffsets(imageFileName, 1, out offsets);

        string txtFileName = Path.Combine(
           Path.GetDirectoryName(imageFileName),
           Path.GetFileNameWithoutExtension(imageFileName) + "_metadata.txt");

        using (StreamWriter writer = File.CreateText(txtFileName))
        {
            // Write the tags
            WriteTags(writer, "Tags", tags, offsets);
        }

        // Show the text file we created
        System.Diagnostics.Process.Start(txtFileName);
    }
}

private static void WriteTags(StreamWriter writer, string name, RasterCollection<RasterTagMetadata> tags, long[] offsets)
{
    writer.WriteLine("{0}:", name);

    if (tags != null)
    {
        int x = 0;
        foreach (RasterTagMetadata tag in tags)
        {
            writer.WriteLine("Id: 0x{0}, offset: {1}", tag.Id.ToString("X"), offsets[x]);
            x++;
        }
    }
    else
    {
        writer.WriteLine("Not supported");
    }

    writer.WriteLine();
}
[TestMethod]
public async Task ReadTagsWithOffsetsExample()
{
   string imageFileName = _tifFileWithTags;
   // Initialize LEADTOOLS
   using (RasterCodecs codecs = new RasterCodecs())
   {
      // Get the file format
      RasterImageFormat format;

      StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(imageFileName);
      using (CodecsImageInfo info = await codecs.GetInformationAsync(LeadStreamFactory.Create(loadFile), false, 1))
      {
         format = info.Format;
      }

      // Load the tags, with their offsets
      IList<RasterTagMetadata> tags = null;
      IList<long> offsets = new List<long>(0);
      if (RasterCodecs.TagsSupported(format))
         tags = await codecs.ReadTagsWithOffsetsAsync(LeadStreamFactory.Create(loadFile), 1, offsets);

      string txtFileName = Path.GetFileNameWithoutExtension(imageFileName) + "_metadata.txt";
      StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(txtFileName);
      using (StreamWriter writer = new StreamWriter( await saveFile.OpenStreamForWriteAsync() ))
      {
         // Write the tags
         WriteTags(writer, "Tags", tags, offsets);
      }
   }
}

private static void WriteTags(StreamWriter writer, string name, IList<RasterTagMetadata> tags, IList<long> offsets)
{
   writer.WriteLine("{0}:", name);
   Debug.WriteLine("{0}:", name);
   if (tags != null)
   {
      int x = 0;
      foreach (RasterTagMetadata tag in tags)
      {
         writer.WriteLine("Id: 0x{0}, offset: {1}", tag.Id.ToString("X"), offsets[x]);
         Debug.WriteLine("Id: 0x{0}, offset: {1}", tag.Id.ToString("X"), offsets[x]);
         x++;
      }
   }
   else
   {
      writer.WriteLine("Not supported");
      Debug.WriteLine("Not supported");
   }

   writer.WriteLine();
   Debug.WriteLine("");
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

RasterCodecs Class
RasterCodecs Members
TagsSupported Method
ReadTag(String,Int32,Int32) Method
EnumTags(String,Int32) Method
CommentsSupported Method
GeoKeysSupported Method
Tags Property
RasterImage.Tags
Working with Markers
Implementing TIFF Comments and Tags
TIFF File Comments
Implementing GeoKeys (GeoTIFF tags)
Leadtools.RasterCommentMetadataType

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.