Leadtools.Codecs Send comments on this topic. | Back to Introduction - All Topics | Help Version 15.12.17
LoadInformation Event
See Also  Example
Leadtools.Codecs Namespace > RasterCodecs Class : LoadInformation Event




Occurs during loading of a file for which LEADTOOLS cannot recognize the format.

Syntax

Visual Basic (Declaration) 
Public Event LoadInformation() As EventHandler(Of CodecsLoadInformationEventArgs)
Visual Basic (Usage)Copy Code
Dim instance As RasterCodecs
Dim handler As EventHandler(Of CodecsLoadInformationEventArgs)
 
AddHandler instance.LoadInformation, handler
C# 
public event EventHandler<CodecsLoadInformationEventArgs> LoadInformation()
Managed Extensions for C++ 
public: __event EventHandler<CodecsLoadInformationEventArgs>* LoadInformation();
C++/CLI 
public:
event EventHandler<CodecsLoadInformationEventArgs>^ LoadInformation();

Example

Visual BasicCopy Code
RasterCodecs.LoadInformation
      Private Structure RawData
         Public Width As Integer ' Width of image
         Public Height As Integer ' Height of image
         Public BitsPerPixel As Integer ' Bits per pixel of image--if palettized, a gray palette is generated
         Public ViewPerspective As RasterViewPerspective ' View perspective of raw data (TopLeft, BottomLeft, etc)
         Public Order As RasterByteOrder ' Rgb or Bgr
         Public XResolution As Integer ' Horizontal resolution in DPI
         Public YResolution As Integer ' Vertical resolution in DPI
         Public Offset As Integer ' Offset into file where raw data begins
         Public Padding As Boolean ' true if each line of data is padded to four bytes
         Public ReverseBits As Boolean ' true if the bits of each byte are reversed
      End Structure
      Private myRawData As RawData

      Private Sub codecs_LoadInformation(ByVal sender As Object, ByVal e As CodecsLoadInformationEventArgs)
         ' Set the information
         e.Format = RasterImageFormat.Raw
         e.Width = myRawData.Width
         e.Height = myRawData.Height
         e.BitsPerPixel = myRawData.BitsPerPixel
         e.XResolution = myRawData.XResolution
         e.YResolution = myRawData.YResolution
         e.Offset = myRawData.Offset

         If myRawData.Padding Then
            e.Pad4 = True
         End If

         e.Order = myRawData.Order

         If myRawData.ReverseBits Then
            e.LeastSignificantBitFirst = True
         End If

         e.ViewPerspective = myRawData.ViewPerspective

         ' If image is palettized create a grayscale palette
         If e.BitsPerPixel <= 8 Then
            Dim colors As Integer = 1 << e.BitsPerPixel
            Dim palette As RasterColor() = New RasterColor(colors - 1) {}
            Dim i As Integer = 0
            Do While i < palette.Length
               Dim val As Byte = CByte((i * 255) / (colors - 1))
               palette(i) = New RasterColor(val, val, val)
               i += 1
            Loop

            e.SetPalette(palette)
         End If
      End Sub


      Public Sub LoadInformationExample()
         RasterCodecs.Startup()
         Dim codecs As RasterCodecs = New RasterCodecs()

         ' First, load a JPEG or CMP file
         Dim srcFilename As String = "C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\Image1.cmp"
         Dim rawFileName As String = "C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\Image1.raw"
         Dim image As RasterImage = codecs.Load(srcFilename)

         ' Save this image as RAW data

         ' Set RAW options
         codecs.Options.Raw.Save.Pad4 = True
         codecs.Options.Raw.Save.ReverseBits = True
         codecs.Options.Save.OptimizedPalette = True

         codecs.Save(image, rawFileName, RasterImageFormat.Raw, 0)

         ' Save information about this image so we can use it to load the RAW file
         myRawData = New RawData()
         myRawData.Width = image.Width
         myRawData.Height = image.Height
         myRawData.BitsPerPixel = image.BitsPerPixel
         myRawData.ViewPerspective = image.ViewPerspective
         myRawData.Order = image.Order
         myRawData.XResolution = image.XResolution
         myRawData.YResolution = image.YResolution
         myRawData.Offset = 0
         myRawData.Padding = True
         myRawData.ReverseBits = True

         ' We dont need the image anymore
         image.Dispose()

         ' Now load this RAW image back

         ' First subscribe to the LoadInformation event so we can set the image information
         AddHandler codecs.LoadInformation, AddressOf codecs_LoadInformation

         ' Load the image
         image = codecs.Load(rawFileName)

         ' Unsubscribe from the event
         RemoveHandler codecs.LoadInformation, AddressOf codecs_LoadInformation

         ' save it as bmp for testing
         codecs.Save(image, "C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\Image1_raw.bmp", RasterImageFormat.Bmp, 0)

         ' Clean up
         image.Dispose()
         codecs.Dispose()
         RasterCodecs.Shutdown()
      End Sub
C#Copy Code
RasterCodecs.LoadInformation 
      private struct RawData 
      { 
         public int Width;                               // Width of image 
         public int Height;                              // Height of image 
         public int BitsPerPixel;                        // Bits per pixel of image--if palettized, a gray palette is generated 
         public RasterViewPerspective ViewPerspective;   // View perspective of raw data (TopLeft, BottomLeft, etc) 
         public RasterByteOrder Order;                   // Rgb or Bgr 
         public int XResolution;                         // Horizontal resolution in DPI 
         public int YResolution;                         // Vertical resolution in DPI 
         public int Offset;                              // Offset into file where raw data begins 
         public bool Padding;                            // true if each line of data is padded to four bytes 
         public bool ReverseBits;                        // true if the bits of each byte are reversed  
      } 
      private RawData myRawData; 
 
      private void codecs_LoadInformation(object sender, CodecsLoadInformationEventArgs e) 
      { 
         // Set the information 
         e.Format = RasterImageFormat.Raw; 
         e.Width = myRawData.Width; 
         e.Height = myRawData.Height; 
         e.BitsPerPixel = myRawData.BitsPerPixel; 
         e.XResolution = myRawData.XResolution; 
         e.YResolution = myRawData.YResolution; 
         e.Offset = myRawData.Offset; 
 
         if(myRawData.Padding) 
            e.Pad4 = true; 
 
         e.Order = myRawData.Order; 
 
         if(myRawData.ReverseBits) 
            e.LeastSignificantBitFirst = true; 
 
         e.ViewPerspective = myRawData.ViewPerspective; 
 
         // If image is palettized create a grayscale palette 
         if(e.BitsPerPixel <= 8) 
         { 
            int colors = 1 << e.BitsPerPixel; 
            RasterColor[] palette = new RasterColor[colors]; 
            for(int i = 0; i < palette.Length; i++) 
            { 
               byte val = (byte)((i * 255) / (colors - 1)); 
               palette[i] = new RasterColor(val, val, val); 
            } 
 
            e.SetPalette(palette); 
         } 
      } 
 
 
      public void LoadInformationExample() 
      { 
         RasterCodecs.Startup(); 
         RasterCodecs codecs = new RasterCodecs(); 
 
         // First, load a JPEG or CMP file 
         string srcFilename = @"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\Image1.cmp"; 
         string rawFileName = @"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\Image1.raw"; 
         RasterImage image = codecs.Load(srcFilename); 
 
         // Save this image as RAW data 
 
         // Set RAW options 
         codecs.Options.Raw.Save.Pad4 = true; 
         codecs.Options.Raw.Save.ReverseBits = true; 
         codecs.Options.Save.OptimizedPalette = true; 
 
         codecs.Save(image, rawFileName, RasterImageFormat.Raw, 0); 
 
         // Save information about this image so we can use it to load the RAW file 
         myRawData = new RawData(); 
         myRawData.Width = image.Width; 
         myRawData.Height = image.Height; 
         myRawData.BitsPerPixel = image.BitsPerPixel; 
         myRawData.ViewPerspective = image.ViewPerspective; 
         myRawData.Order = image.Order; 
         myRawData.XResolution = image.XResolution; 
         myRawData.YResolution = image.YResolution; 
         myRawData.Offset = 0; 
         myRawData.Padding = true; 
         myRawData.ReverseBits = true; 
 
         // We dont need the image anymore 
         image.Dispose(); 
 
         // Now load this RAW image back 
 
         // First subscribe to the LoadInformation event so we can set the image information 
         codecs.LoadInformation += new EventHandler<CodecsLoadInformationEventArgs>(codecs_LoadInformation); 
 
         // Load the image 
         image = codecs.Load(rawFileName); 
 
         // Unsubscribe from the event 
         codecs.LoadInformation -= new EventHandler<CodecsLoadInformationEventArgs>(codecs_LoadInformation); 
 
         // save it as bmp for testing 
         codecs.Save(image, @"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\Image1_raw.bmp", RasterImageFormat.Bmp, 0); 
 
         // Clean up 
         image.Dispose(); 
         codecs.Dispose(); 
         RasterCodecs.Shutdown(); 
      }

Remarks

The LoadInformation event will occur when LEADTOOLS cannot recognize the image file format during a call to GetInformation. This event can be used for loading raw FAX data (CCITT Group 3 or Group 4), raw run-length-encoded data (4-bit or 8-bit), raw Bitfield compressed data, raw PackBits compressed data or raw uncompressed data.

To load a raw fax file, you must subscribe to this event first. When the toolkit fails to recognize the image file format, it will fire this event. If you know the size of the fax image, then set the values in the CodecsLoadInformationEventArgs.Width and CodecsLoadInformationEventArgs.Height properties of the CodecsLoadInformationEventArgs passed as the event data. To automatically detect the width and height of the fax file, set CodecsLoadInformationEventArgs.Width and CodecsLoadInformationEventArgs.Height to -1.

To load raw uncompressed data, you must subscribe to this event first. When the toolkit fails to recognize the image file format, it will fire this event. Set the CodecsLoadInformationEventArgs.Format property to RasterImageFormat.Raw. Valid values must also be set for the following properties:

If each line of RAW data is padded so that the number of bytes is a multiple of 4 (as is the case with raw Windows BMP data), set CodecsLoadInformationEventArgs.Pad4 to true. Include an orientation in the CodecsLoadInformationEventArgs.ViewPerspective to load with the proper orientation. For example, raw Windows BMP data is stored with a RasterViewPerspective.BottomLeft orientation. If the orientation is unknown, then set it to RasterViewPerspective.BottomLeft. If the raw data is 8 bits per pixel or less, then the image is palettized and a palette must be generated. If this is the case, pass in a valid palette with 1 >gt; bits/pixel number of entries to the CodecsLoadInformationEventArgs.SetPalette method.

Set the correct color order in the CodecsLoadInformationEventArgs.Order property. For example, if the order of the data is BGR, then set this value to RasterByteOrder.Bgr.

For more information, refer to CodecsLoadInformationEventArgs.

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also