←Select platform

GetInformationAsync(Stream,bool,int,object) Method

Summary

Gets the image information from a stream containing image data asynchronously.

Syntax
C#
VB
Objective-C
C++
Java
public CodecsImageInfo GetInformationAsync( 
   Stream stream, 
   bool totalPages, 
   int pageNumber, 
   object userState 
) 
Public Overloads Function GetInformationAsync( _ 
   ByVal stream As Stream, _ 
   ByVal totalPages As Boolean, _ 
   ByVal pageNumber As Integer, _ 
   ByVal userState As Object _ 
) As CodecsImageInfo 
- (void)imageInformationForStreamAsync:(LTLeadStream *)stream  
                            totalPages:(BOOL)totalPages  
                            pageNumber:(NSInteger)pageNumber  
                            completion:(void (^)(LTCodecsImageInfo * __nullable info, NSError * __nullable error))completion 
public Object getInformationAsync(ILeadStream stream, boolean totalPages, int pageNumber, Object userState) 
public: 
CodecsImageInfo^ GetInformationAsync(  
   Stream^ stream, 
   bool totalPages, 
   int pageNumber, 
   Object^ userState 
)  

Parameters

stream
Stream containing the input image data to query.

totalPages
true to query the file for total number of pages; false, otherwise.

pageNumber
The page number to query. Pass 1 for the first page (default).

userState
A user-defined object that is passed to the method invoked when the asynchronous operation completes.

Return Value

A CodecsImageInfo object that contains the information about the specified image. See remarks about the usage of this object.

Remarks

NOTE: This topic is part of RasterCodecs Async support using the .NET System.ComponentMode.AsyncOperation model. For .NET async/await, use Task<CodecsImageInfo> GetInformationAsync(ILeadStream stream, bool totalPages, int pageNumber).

Specifying true for totalPages can cause the process to be slow for files with large number of pages.

The RasterCodecs class supports getting information on image files asynchronously using the GetInformationAsync methods. When calling any of these methods, the caller thread will not be blocked and the method will return instantly with an instance CodecsImageInfo that is in a loading status (CodecsImageInfo.IsLoading set to true). You should not use the other properties of this object while the object is in loading status.

When the RasterCodecs object finishes getting the information about the file, the various properties of the CodecsImageInfo will be populated with the image file information and the CodecsImageInfo.IsLoading property will be set to false.

It is recommended that you do not poll for the CodecsImageInfo.IsLoading property to determine whether the image information has been collected. Instead, subscribe to the GetInformationAsyncCompleted event to get notification on when the GetInformationAsync operation is completed and whether any errors occurred.

The GetInformationAsyncCompleted event data will also contain the same object returned from GetInformationAsync so you do not have to keep the original object in your application. userState will be passed to the CodecsGetInformationAsyncCompletedEventArgs.UserState member of the GetInformationAsyncCompleted event data.

Example
C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
using LeadtoolsExamples.Common; 
 
public void GetInformationAsyncStreamExample() 
{ 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Now get information about the file asynchronously 
   codecs.GetInformationAsyncCompleted += new EventHandler<CodecsGetInformationAsyncCompletedEventArgs>(GetInformationAsyncStreamExample_GetInformationAsyncCompleted); 
 
   Stream stream = File.OpenRead(srcFileName); 
   object imageInfoObject = codecs.GetInformationAsync(stream, true, 1, null); 
 
   // Notice that the returned imageInfoObject is a CodecsImageInfo with IsLoading set to true at this point 
   // The IsLoading will be false (and hence, the object will be usable) when the GetInformationAsyncCompleted 
   // fires. 
} 
 
private void GetInformationAsyncStreamExample_GetInformationAsyncCompleted(object sender, CodecsGetInformationAsyncCompletedEventArgs e) 
{ 
   if (e.Cancelled) 
   { 
      Console.WriteLine("User canceled"); 
   } 
   else if (e.Error != null) 
   { 
      Console.WriteLine("Error: " + e.Error.Message); 
   } 
   else 
   { 
      // Get the image info 
      CodecsImageInfo info = e.Info; 
      Console.WriteLine("Image info obtained asynchronously:\n{0}", info.ToString()); 
      info.Dispose(); 
   } 
 
   // We should close the stream here 
   e.Stream.Dispose(); 
 
   // Unsubscribe to the event and dispose the RasterCodecs object 
   RasterCodecs codecs = sender as RasterCodecs; 
   codecs.GetInformationAsyncCompleted -= new EventHandler<CodecsGetInformationAsyncCompletedEventArgs>(GetInformationAsyncStreamExample_GetInformationAsyncCompleted); 
   codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Drawing 
Imports Leadtools.Svg 
 
Public Sub GetInformationAsyncStreamExample() 
   Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp") 
 
   Dim codecs As New RasterCodecs() 
 
   ' Now get information about the file asynchronously 
   AddHandler codecs.GetInformationAsyncCompleted, AddressOf GetInformationAsyncStreamExample_GetInformationAsyncCompleted 
 
   Dim stream As Stream = File.OpenRead(srcFileName) 
   Dim imageInfoObject As Object = codecs.GetInformationAsync(stream, True, 1, Nothing) 
 
   ' Notice that the returned imageInfoObject is a CodecsImageInfo with IsLoading set to true at this point 
   ' The IsLoading will be false (and hence, the object will be usable) when the GetInformationAsyncCompleted 
   ' fires. 
End Sub 
 
Private Sub GetInformationAsyncStreamExample_GetInformationAsyncCompleted(ByVal sender As Object, ByVal e As CodecsGetInformationAsyncCompletedEventArgs) 
   If e.Cancelled Then 
      Console.WriteLine("User canceled") 
   ElseIf Not IsNothing(e.Error) Then 
      Console.WriteLine("Error: " + e.Error.Message) 
   Else 
      ' Get the image info 
      Dim info As CodecsImageInfo = DirectCast(e.Info, CodecsImageInfo) 
      Console.WriteLine("Image info obtainted asynchronously:\n{0}", info.ToString()) 
      info.Dispose() 
   End If 
 
   ' We should close the stream here 
   e.Stream.Dispose() 
 
   ' Unsubscribe to the event and dispose the RasterCodecs object 
   Dim codecs As RasterCodecs = DirectCast(sender, RasterCodecs) 
   RemoveHandler codecs.GetInformationAsyncCompleted, AddressOf GetInformationAsyncStreamExample_GetInformationAsyncCompleted 
   codecs.Dispose() 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 

Requirements

Target Platforms

Help Version 20.0.2020.4.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly