ImageGear .NET v25.2 - Updated
Developer Guide / How to Work with... / Common Operations / Loading and Saving / Loading
In This Topic
    Loading
    In This Topic

    The ImGearFileFormats class provides the APIs that should be employed to load a document/image. This operation is mainly performed from a given .NET Stream object. ImageGear supports loading from streams having the seek ability, as well as from streams that don't have the seek ability, such as network streams. If the loading operation cannot be performed, an exception with either of the following codes is thrown: ImageGear.Core.ImGearErrorCodes.CANT_DETECT_FORMAT or ImageGear.Core.ImGearErrorCodes.CANT_FIND_FORMAT.

    If the document size is close to 2GB, the System.OutOfMemoryException will be thrown.

    Load a Single Page

    To load a single page, use the LoadPage method as follows:

    C#
    Copy Code
    using System.IO;
    using ImageGear.Core;
    using ImageGear.Formats;
    public ImGearPage LoadPageFromLocalFile(string filePath)
    {
         // From a local file
         ImGearPage igPage;
         int pageIndex = 0;
    
         using (FileStream localFile = new FileStream(filePath,FileMode.Open))
         {
              igPage = ImGearFileFormats.LoadPage(localFile, pageIndex);
         }
         return igPage;
    }
    
    VB.NET
    Copy Code
    Imports System.IO
    Imports ImageGear.Core
    Imports ImageGear.Formats
    Public Function LoadPageFromLocalFile(filePath As String) As ImGearPage
                ' From a local file
                Dim igPage As ImGearPage
                Dim pageIndex As Integer = 0
    
                Using localFile As New FileStream(filePath, FileMode.Open)
                            igPage = ImGearFileFormats.LoadPage(localFile, pageIndex)
                End Using
    
                Return igPage
    End Function
    

    From a Web Server

    ImageGear provides a specialized stream class for loading of images from the internet: ImGearWebStream class. This class is most useful for loading multi-page images, because it downloads only the necessary portion of a remote file. ImGearWebStream class only supports loading images from servers that use HTTP protocol. The following example demonstrates how to load a page from a remote document using ImGearWebStream class:

    C#
    Copy Code
    using ImageGear.Core;
    using ImageGear.Formats;
    public ImGearPage LoadPageFromWebServerFile(string webServerFileURL)
    {
         ImGearPage igPage;
         int pageIndex = 0;
    
         using (ImGearWebStream igWebStream = new ImGearWebStream(webServerFileURL))
                igPage = ImGearFileFormats.LoadPage(igWebStream, pageIndex);
    
         return igPage;
    }
    
    VB.NET
    Copy Code
    Imports ImageGear.Core
    Imports ImageGear.Formats
    Public Function LoadPageFromWebServerFile(webServerFileURL As String) As ImGearPage
                Dim igPage As ImGearPage
                Dim pageIndex As Integer = 0
    
                Using igWebStream As New ImGearWebStream(webServerFileURL)
                            igPage = ImGearFileFormats.LoadPage(igWebStream, pageIndex)
                End Using
    
                Return igPage
    End Function
    

    Furthermore, we can load a page from a remote file using WebRequest:

    C#
    Copy Code
    using System.Net;
    using ImageGear.Core;
    using ImageGear.Formats;
    public ImGearPage LoadPageFromWebRequestrFile(string webServerFileURL)
    {
         ImGearPage igPage;
         int pageIndex = 0;
         WebRequest request = WebRequest.Create(webServerFileURL);
         using (WebResponse response = request.GetResponse())
            using (Stream stream = response.GetResponseStream())
                igPage = ImGearFileFormats.LoadPage(stream, pageIndex);
    
         return igPage;
    }
    
    VB.NET
    Copy Code
    Imports System.Net
    Imports ImageGear.Core
    Imports ImageGear.Formats
    Public Function LoadPageFromWebRequestrFile(webServerFileURL As String) As ImGearPage
                Dim igPage As ImGearPage
                Dim pageIndex As Integer = 0
                Dim request As WebRequest = WebRequest.Create(webServerFileURL)
                Using response As WebResponse = request.GetResponse()
                            Using stream As Stream = response.GetResponseStream()
                                        igPage = ImGearFileFormats.LoadPage(stream, pageIndex)
                            End Using
                End Using
    
                Return igPage
    End Function
    

    Load a Document (Multiple Pages as a Document)

    For this purpose, we should use the LoadDocument method. See What's the Best Format for...? for a list of the multi-page formats supported by ImageGear .NET:

    C#
    Copy Code
    using System.IO;
    using ImageGear.Core;
    using ImageGear.Formats;
    public ImGearDocument LoadDocumentFromFile(string filePath)
    {
         ImGearDocument igDocument;
                using (FileStream localFile = new FileStream(filePath, FileMode.Open))
                {
                            int pageCount = ImGearFileFormats.GetPageCount(localFile, ImGearFormats.UNKNOWN);
                            igDocument = ImGearFileFormats.LoadDocument(localFile, 0, pageCount);
                }
    
         return igDocument;
    }
    
    VB.NET
    Copy Code
    Imports System.IO
    Imports ImageGear.Core
    Imports ImageGear.Formats
    Public Function LoadDocumentFromFile(filePath As String) As ImGearDocument
                Dim igDocument As ImGearDocument
                Using localFile As New FileStream(filePath, FileMode.Open)
                            Dim pageCount As Integer = ImGearFileFormats.GetPageCount(localFile, ImGearFormats.UNKNOWN)
                            igDocument = ImGearFileFormats.LoadDocument(localFile, 0, pageCount)
                End Using
    
                Return igDocument
    End Function
    

    For both the LoadPage method and the LoadDocument method, there is an overload receiving another parameter, ImGearLoadOptions object that allows you to be more specific about the loading operation.

    Use Optional Parameters

    We can use ImGearLoadOptions for setting certain options related to a loading operation.

    The following example demonstrates how to load a format file by setting an instance of ImGearRawLoadOptions object. For this purpose, ImageGear provides a special dialog OpenRawFileDialog.

    C#
    Copy Code
    using ImageGear.Core;
    using ImageGear.Formats;
    using ImageGear.Windows.Forms;
    public void LoadRawImage()
    {
         // Create and Fill an instance of ImGearRawLoadOptions
         ImGearRawLoadOptions optionsForLoadRawFile = null;
         optionsForLoadRawFile = new ImGearRawLoadOptions();
         optionsForLoadRawFile.Format = ImGearFormats.RAW;
         optionsForLoadRawFile.Compression = ImGearCompressions.LZW;
         optionsForLoadRawFile.ColorSpace = new ImGearColorSpace(ImGearColorSpaceIDs.Gy);
         optionsForLoadRawFile.BitsPerChannel = 9;
         optionsForLoadRawFile.Alignment = ImGearRawAlignment.DoubleWord;
         optionsForLoadRawFile.Offset = 0;
         optionsForLoadRawFile.Width = 400;
         optionsForLoadRawFile.Height = 300;
         filePathNameForLoadRawFile = string.Empty;
    
         // Open a dialog especially designed for raw file formats.
         // A common Open File Dialog can be used instead if desired.
         using (OpenRawFileDialog dialog = new OpenRawFileDialog())
         {
              dialog.Compression = optionsForLoadRawFile.Compression;
              dialog.ColorSpace = optionsForLoadRawFile.ColorSpace;
              dialog.BitsPerChannel = optionsForLoadRawFile.BitsPerChannel;
              dialog.Alignment = optionsForLoadRawFile.Alignment;
              dialog.Offset = optionsForLoadRawFile.Offset;
              dialog.ImageWidth = optionsForLoadRawFile.Width;
              dialog.ImageHeight = optionsForLoadRawFile.Height;
              dialog.FillOrder = optionsForLoadRawFile.FillOrder;
              dialog.IsRasterPacked = optionsForLoadRawFile.IsRasterPacked;
              dialog.FilePathName = filePathNameForLoadRawFile;
    
              if (dialog.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
              {
                   optionsForLoadRawFile.Compression = dialog.Compression;
                   optionsForLoadRawFile.ColorSpace = dialog.ColorSpace;
                   optionsForLoadRawFile.BitsPerChannel = dialog.BitsPerChannel;
                   optionsForLoadRawFile.Alignment = dialog.Alignment;
                   optionsForLoadRawFile.Offset = dialog.Offset;
                   optionsForLoadRawFile.Width = dialog.ImageWidth;
                   optionsForLoadRawFile.Height = dialog.ImageHeight;
                   optionsForLoadRawFile.FillOrder = dialog.FillOrder;
                   optionsForLoadRawFile.IsRasterPacked = dialog.IsRasterPacked;
                   filePathNameForLoadRawFile = dialog.FilePathName;
              }
         }
    
         using (FileStream fileStream = new FileStream(filePathNameForLoadRawFile, FileMode.Open, FileAccess.Read))
         {
              imGearPage = ImGearFileFormats.LoadPage(fileStream, 0, optionsForLoadRawFile);
         }
    }
    
    VB.NET
    Copy Code
    Imports ImageGear.Core
    Imports ImageGear.Formats
    Imports ImageGear.Windows.Forms
    Public Sub LoadRawImage()
                ' Create and Fill an instance of ImGearRawLoadOptions
                Dim optionsForLoadRawFile As ImGearRawLoadOptions = Nothing
                optionsForLoadRawFile = New ImGearRawLoadOptions()
                optionsForLoadRawFile.Format = ImGearFormats.RAW
                optionsForLoadRawFile.Compression = ImGearCompressions.LZW
                optionsForLoadRawFile.ColorSpace = New ImGearColorSpace(ImGearColorSpaceIDs.Gy)
                optionsForLoadRawFile.BitsPerChannel = 9
                optionsForLoadRawFile.Alignment = ImGearRawAlignment.DoubleWord
                optionsForLoadRawFile.Offset = 0
                optionsForLoadRawFile.Width = 400
                optionsForLoadRawFile.Height = 300
                filePathNameForLoadRawFile = String.Empty
    
                ' Open a dialog especially designed for raw file formats.
                ' A common Open File Dialog can be used instead if desired.
                Using dialog As New OpenRawFileDialog()
                            dialog.Compression = optionsForLoadRawFile.Compression
                            dialog.ColorSpace = optionsForLoadRawFile.ColorSpace
                            dialog.BitsPerChannel = optionsForLoadRawFile.BitsPerChannel
                            dialog.Alignment = optionsForLoadRawFile.Alignment
                            dialog.Offset = optionsForLoadRawFile.Offset
                            dialog.ImageWidth = optionsForLoadRawFile.Width
                            dialog.ImageHeight = optionsForLoadRawFile.Height
                            dialog.FillOrder = optionsForLoadRawFile.FillOrder
                            dialog.IsRasterPacked = optionsForLoadRawFile.IsRasterPacked
                            dialog.FilePathName = filePathNameForLoadRawFile
    
                            If dialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
                                        optionsForLoadRawFile.Compression = dialog.Compression
                                        optionsForLoadRawFile.ColorSpace = dialog.ColorSpace
                                        optionsForLoadRawFile.BitsPerChannel = dialog.BitsPerChannel
                                        optionsForLoadRawFile.Alignment = dialog.Alignment
                                        optionsForLoadRawFile.Offset = dialog.Offset
                                        optionsForLoadRawFile.Width = dialog.ImageWidth
                                        optionsForLoadRawFile.Height = dialog.ImageHeight
                                        optionsForLoadRawFile.FillOrder = dialog.FillOrder
                                        optionsForLoadRawFile.IsRasterPacked = dialog.IsRasterPacked
                                        filePathNameForLoadRawFile = dialog.FilePathName
                            End If
                End Using
    
                Using fileStream As New FileStream(filePathNameForLoadRawFile, FileMode.Open, FileAccess.Read)
                            imGearPage = ImGearFileFormats.LoadPage(fileStream, 0, optionsForLoadRawFile)
                End Using
    End Sub