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

StartFeedGetInformation Method

Example 





true to query the file for total number of pages; false, otherwise.
1-based index to the page number to query.
Initializes a file information process in which you control the input stream. .NET support WinRT support
Syntax
public void StartFeedGetInformation( 
   bool totalPages,
   int pageNumber
)
'Declaration
 
Public Sub StartFeedGetInformation( _
   ByVal totalPages As Boolean, _
   ByVal pageNumber As Integer _
) 
'Usage
 
Dim instance As RasterCodecs
Dim totalPages As Boolean
Dim pageNumber As Integer
 
instance.StartFeedGetInformation(totalPages, pageNumber)
public void StartFeedGetInformation( 
   bool totalPages,
   int pageNumber
)
 function Leadtools.Codecs.RasterCodecs.StartFeedGetInformation( 
   totalPages ,
   pageNumber 
)
public:
void StartFeedGetInformation( 
   bool totalPages,
   int pageNumber
) 

Parameters

totalPages
true to query the file for total number of pages; false, otherwise.
pageNumber
1-based index to the page number to query.
Remarks

You must call the FeedGetInformation(Byte[],Int32,Int32) method to supply buffered data, and you must call StopFeedGetInformation when the process is complete.

This file information process is useful when receiving transmitted images, such as those on the Internet. It works the same way as the GetInformation(String,Boolean) method, except that your code supplies the image data. The file information process works as follows:

  1. You call the StartFeedGetInformation method to initialize the file information process.
  2. You create a buffer, and each time you fill it with information, you call the FeedGetInformation(Byte[],Int32,Int32) method, which sends the data to the file information process just as if the data were being read from a file on disk.

    If the FeedGetInformation(Byte[],Int32,Int32) returns true, this means the frameworks does not have enough data to get the information required; you must read more data and call the FeedGetInformation(Byte[],Int32,Int32) again. When FeedGetInformation(Byte[],Int32,Int32) returns false, the framework has gathered enough data and you can break out of the loop.

  3. At any time after calling StartFeedGetInformation, you can call CancelFeedGetInformation to gracefully abort the feed operation. This allows you to end the feed process without throwing an exception.
  4. To end the file information process, you call the StopFeedGetInformation method, which cleans up the process, and returns an instance of the CodecsImageInfo class if successful. If you call this method before enough image data is passed to gather the information, it will successfully clean up the process, but will throw an exception. You should catch the exception if the process is canceled purposely.

This method cannot be used in combination with StartRedirecting.

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

Example
 
Public Sub FeedGetInformationExample()
   Dim codecs As New RasterCodecs()

   Dim url As String = "http://www.leadtools.com/images/web-header.jpg"

   ' Create a WebRequest for the URL
   Dim request As WebRequest = WebRequest.Create(url)
   request.Proxy.Credentials = CredentialCache.DefaultCredentials

   ' reduce the timeout to 20 sec
   request.Timeout = 20000

   Dim response As WebResponse = request.GetResponse()

   Try
      Dim strm As Stream = response.GetResponseStream()

      ' Read chunks from the stream and feed load to the image
      codecs.StartFeedGetInformation(True, 1)

      Const bufferSize As Integer = 1024
      Dim buffer(bufferSize - 1) As Byte

      Dim more As Boolean

      Do
         System.Windows.Forms.Application.DoEvents()

         Dim read As Integer = strm.Read(buffer, 0, bufferSize)
         Console.WriteLine("Downloading {0} bytes", read)
         If (read > 0) Then
            more = codecs.FeedGetInformation(buffer, 0, read)
         Else
            ' no more image data in the stream
            more = False
         End If
      Loop While more
   Finally
      response.Close()
   End Try

   Dim info As CodecsImageInfo = codecs.StopFeedGetInformation()

   ' Clean up
   codecs.Dispose()

   ' Show the information
   Console.WriteLine(info.ToString())
End Sub
public void FeedGetInformationExample()
{
    RasterCodecs codecs = new RasterCodecs();

    string url = @"http://www.leadtools.com/images/page_graphics/leadlogo.png";

    // Create a WebRequest for the URL
    WebRequest request = WebRequest.Create(url);
    request.Proxy.Credentials = CredentialCache.DefaultCredentials;

    // reduce the timeout to 20 sec
    request.Timeout = 20000;

    WebResponse response = request.GetResponse();

    try
    {
        Stream strm = response.GetResponseStream();

        // Read chunks from the stream and feed load to the image
        codecs.StartFeedGetInformation(true, 1);

        const int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];

        bool more;

        do
        {
            System.Windows.Forms.Application.DoEvents();

            int read = strm.Read(buffer, 0, bufferSize);
            Console.WriteLine("Downloading {0} bytes", read);
            if (read > 0)
                more = codecs.FeedGetInformation(buffer, 0, read);
            else
            {
                // no more image data in the stream
                more = false;
            }
        }
        while (more);
    }
    finally
    {
        response.Close();
    }

    CodecsImageInfo info = codecs.StopFeedGetInformation();

    // Clean up
    codecs.Dispose();

    // Show the information
    Console.WriteLine(info.ToString());
}
//[TestMethod]
//public async Task FeedGetInformationExample()
//{
//   RasterCodecs codecs = new RasterCodecs();

//   string url = @"http://www.leadtools.com/images/page_graphics/leadlogo.png";

//   // Create a WebRequest for the URL
//   WebRequest request = WebRequest.Create(url);
//   request.Proxy.Credentials = CredentialCache.DefaultCredentials;

//   WebResponse response = await request.GetResponseAsync();

//   try
//   {
//      Stream strm = response.GetResponseStream();

//      // Read chunks from the stream and feed load to the image
//      codecs.StartFeedGetInformation(true, 1);

//      const int bufferSize = 1024;
//      byte[] buffer = new byte[bufferSize];

//      bool more;

//      do
//      {
//         int read = strm.Read(buffer, 0, bufferSize);
//         console.info("Downloading {0} bytes", read);
//         if (read > 0)
//            more = codecs.FeedGetInformation(buffer, 0, read);
//         else
//         {
//            // no more image data in the stream
//            more = false;
//         }
//      }
//      while (more);
//   }
//   finally
//   {
//      response.Dispose();
//   }

//   CodecsImageInfo info = codecs.StopFeedGetInformation();

//   // Clean up
//   codecs.Dispose();

//   // Show the information
//   console.info(info.GetStringDescription());
//}
//
[TestMethod]
public async Task FeedGetInformationExample()
{
   RasterCodecs codecs = new RasterCodecs();
   string url = @"http://www.leadtools.com/images/page_graphics/leadlogo.png";

   // Create a WebRequest for the URL
   WebRequest request = WebRequest.Create(url);
   request.Proxy.Credentials = CredentialCache.DefaultCredentials;

   WebResponse response = await request.GetResponseAsync();

   try
   {
      Stream strm = response.GetResponseStream();

      // Read chunks from the stream and feed load to the image
      codecs.StartFeedGetInformation(true, 1);

      const int bufferSize = 1024;
      byte[] buffer = new byte[bufferSize];

      bool more;

      do
      {
         int read = strm.Read(buffer, 0, bufferSize);
         Debug.WriteLine("Downloading {0} bytes", read);
         if (read > 0)
            more = codecs.FeedGetInformation(buffer, 0, read);
         else
         {
            // no more image data in the stream
            more = false;
         }
      }
      while (more);
   }
   finally
   {
      response.Dispose();
   }

   CodecsImageInfo info = codecs.StopFeedGetInformation();

   // Clean up
   codecs.Dispose();

   // Show the information
   Debug.WriteLine(info.GetStringDescription());
}
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

 

 


Products | Support | Contact Us | Copyright Notices

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