←Select platform

GetInformationAsync(Uri,bool,int,object) Method

Summary
Gets the specific image page information from the specified Uri asynchronously.
Syntax
C#
C++/CLI
Python
public CodecsImageInfo GetInformationAsync( 
   Uri uri, 
   bool totalPages, 
   int pageNumber, 
   object userState 
) 
public: 
CodecsImageInfo^ GetInformationAsync(  
   Uri^ uri, 
   bool totalPages, 
   int pageNumber, 
   Object^ userState 
)  
def GetInformationAsync(self,uri,totalPages,pageNumber,userState): 

Parameters

uri
The Uri containing the input image data.

totalPages
true to query the URI 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.

LEADTOOLS supports the following URI schemes:

Scheme Description
UriSchemeFile Specifies that the URI is a disk file in local machine or universal naming convention (UNC) path.
UriSchemeHttp Specifies that the URI is accessed through the Hypertext Transfer Protocol (HTTP).
UriSchemeHttps Specifies that the URI is accessed through the Secure Hypertext Transfer Protocol (HTTPS).
UriSchemeFtp Specifies that the URI is accessed through the File Transfer Protocol (FTP).

If  uri points to a resource in a UriSchemeHttp, UriSchemeHttps or UriSchemeFtp, then this RasterCodecs will attempt to download image data in an iterative fashion by creating a temporary buffer. The size of this buffer can be determined and changed by setting up the UriOperationBufferSize prior to calling this method.

For authenticity and proxy settings, refer to UriOperationCredentials and UriOperationProxy.

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#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
public void GetInformationAsyncCompletedExample() 
{ 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
   Uri uri = new Uri(srcFileName); 
 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Now get information about the file asynchronously 
   codecs.GetInformationAsyncCompleted += new EventHandler<CodecsGetInformationAsyncCompletedEventArgs>(GetInformationAsyncCompletedExample_GetInformationAsyncCompleted); 
   object imageInfoObject = codecs.GetInformationAsync(uri, 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 GetInformationAsyncCompletedExample_GetInformationAsyncCompleted(object sender, CodecsGetInformationAsyncCompletedEventArgs e) 
{ 
   if (e.Cancelled) 
   { 
      Debug.WriteLine("User canceled"); 
   } 
   else if (e.Error != null) 
   { 
      Debug.WriteLine("Error: " + e.Error.Message); 
   } 
   else 
   { 
      // Get the image info 
      CodecsImageInfo info = e.Info; 
      Debug.WriteLine("Image info obtainted asynchronously:\n{0}", info.ToString()); 
      info.Dispose(); 
   } 
 
   // Unsubscribe to the event and dispose the RasterCodecs object 
   RasterCodecs codecs = sender as RasterCodecs; 
   codecs.GetInformationAsyncCompleted -= new EventHandler<CodecsGetInformationAsyncCompletedEventArgs>(GetInformationAsyncCompletedExample_GetInformationAsyncCompleted); 
   codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.*; 
import java.net.*; 
import java.nio.file.Paths; 
import java.util.*; 
import java.time.Instant; 
import java.time.Duration; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.codecs.RasterCodecs.FeedCallbackThunk; 
import leadtools.drawing.internal.*; 
import leadtools.imageprocessing.*; 
import leadtools.imageprocessing.color.ChangeIntensityCommand; 
import leadtools.svg.*; 
 
 
public void getInformationAsyncCompletedExample() throws URISyntaxException, IOException { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp"); 
   URI uri = Paths.get(srcFileName).toUri(); 
 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Now get information about the file asynchronously 
   codecs.addGetInformationAsyncCompletedListener(getInformationAsyncCompletedExampleGetInformationAsyncCompleted); 
   ILeadStream uriStream = LeadStreamFactory.create(uri); 
   codecs.getInformationAsync(uriStream, true, 1, null); 
 
   assertTrue("Check that URI exists", uri != null); 
   System.out.println("The URI exists"); 
 
   uriStream.close(); 
} 
 
CodecsGetInformationAsyncCompletedListener getInformationAsyncCompletedExampleGetInformationAsyncCompleted = new CodecsGetInformationAsyncCompletedListener() { 
 
   @Override 
   public void onGetInformationAsyncCompleted(CodecsGetInformationAsyncCompletedEvent e) { 
      if (e.getCancelled()) { 
         System.out.println("User canceled"); 
      } else if (e.getError() != null) { 
         System.out.println("Error: " + e.getError().getMessage()); 
      } else { 
         // Get the image info 
         CodecsImageInfo info = e.getInfo(); 
         System.out.println("Image info obtainted asynchronously:\n" + info.toString()); 
      } 
 
      // Unsubscribe to the event and dispose the RasterCodecs object 
      RasterCodecs codecs = (RasterCodecs) e.getSource(); 
      codecs.removeGetInformationAsyncCompletedListener( 
            getInformationAsyncCompletedExampleGetInformationAsyncCompleted); 
      codecs.dispose(); 
   } 
 
}; 
Requirements

Target Platforms

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

Leadtools.Codecs Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.