←Select platform

FormatSupportsMultipageSave Method

Summary

Gets a value that indicates whether the specified format supports multipage save operation.

Syntax
C#
VB
C++
public static bool FormatSupportsMultipageSave( 
   RasterImageFormat format 
) 
Public Shared Function FormatSupportsMultipageSave( _ 
   ByVal format As RasterImageFormat _ 
) As Boolean 
public: 
static bool FormatSupportsMultipageSave(  
   RasterImageFormat format 
)  

Parameters

format
Format to check.

Return Value

true if the image file format specified by format supports multipage save operations.

Example

This example will try to save a multipage file to disk, if the format supports multipage files, then it will create a single output file, otherwise, multiple files (for each page) will be created.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
using LeadtoolsExamples.Common; 
 
private static void SaveMultiPageFile(RasterCodecs rasterCodecs, RasterImage multiPageImage, string outputFile, RasterImageFormat format) 
{ 
   // Check if the image has multi-ple pages and the format supports multi-page 
   if (multiPageImage.PageCount > 1 && RasterCodecs.FormatSupportsMultipageSave(format)) 
   { 
      // Yes, just save the file 
      rasterCodecs.Save(multiPageImage, outputFile, format, 0, 1, -1, 1, CodecsSavePageMode.Overwrite); 
   } 
   else 
   { 
      // No, we need to save each page in a separate file 
      int originalPageNumber = multiPageImage.Page; 
 
      for (int pageNumber = 1; pageNumber <= multiPageImage.PageCount; pageNumber++) 
      { 
         // Get the new file name 
         string name = Path.GetFileNameWithoutExtension(outputFile) + "_page" + pageNumber.ToString(); 
         name = Path.ChangeExtension(name, Path.GetExtension(outputFile)); 
         string pageFile = Path.Combine(Path.GetDirectoryName(outputFile), name); 
 
         // Save this page 
         multiPageImage.Page = pageNumber; 
         rasterCodecs.Save(multiPageImage, pageFile, format, 0); 
      } 
 
      multiPageImage.Page = originalPageNumber; 
   } 
} 
 
public static void FormatSupportsMultipageSaveExample() 
{ 
   string inDir = LeadtoolsExamples.Common.ImagesPath.Path; 
   string outDir = Path.Combine(inDir, @"FormatSupportsMultipageSave"); 
 
   if (!Directory.Exists(outDir)) 
      Directory.CreateDirectory(outDir); 
 
   using (RasterCodecs rasterCodecs = new RasterCodecs()) 
   { 
      // Create a multi-page image 
      using (RasterImage multiPageImage = GetMultipageImage(rasterCodecs, inDir)) 
      { 
         // Save the image as TIF, this should create a single file 
         SaveMultiPageFile(rasterCodecs, multiPageImage, Path.Combine(outDir, "out.tif"), RasterImageFormat.Tif); 
 
         // Save the image as PNG, this should create multiple files (one for each page) 
         SaveMultiPageFile(rasterCodecs, multiPageImage, Path.Combine(outDir, "out.png"), RasterImageFormat.Png); 
      } 
   } 
} 
 
private static RasterImage GetMultipageImage(RasterCodecs rasterCodecs, string inDir) 
{ 
   // Create a multi-page image from some known LEADTOOLS images 
   RasterImage multiPageImage = null; 
 
   for (int imageNumber = 1; imageNumber <= 4; imageNumber++) 
   { 
      string fileName = Path.Combine(inDir, "Ocr" + imageNumber.ToString() + ".tif"); 
 
      RasterImage pageImage = rasterCodecs.Load(fileName, 1); 
      if (multiPageImage == null) 
      { 
         multiPageImage = pageImage; 
      } 
      else 
      { 
         multiPageImage.AddPage(pageImage); 
         pageImage.Dispose(); 
      } 
   } 
 
   return multiPageImage; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Drawing 
Imports Leadtools.Svg 
 
Private Shared Sub SaveMultiPageFile(rasterCodecs As RasterCodecs, multiPageImage As RasterImage, outputFile As String, format As RasterImageFormat) 
   ' Check if the image has multi-ple pages and the format supports multi-page 
   If multiPageImage.PageCount > 1 AndAlso RasterCodecs.FormatSupportsMultipageSave(format) Then 
      ' Yes, just save the file 
      rasterCodecs.Save(multiPageImage, outputFile, format, 0, 1, -1, 1, CodecsSavePageMode.Overwrite) 
   Else 
      ' No, we need to save each page in a separate file 
      Dim originalPageNumber As Integer = multiPageImage.Page 
 
      For pageNumber As Integer = 1 To multiPageImage.PageCount 
         ' Get the new file name 
         Dim name As String = Path.GetFileNameWithoutExtension(outputFile) + "_page" + pageNumber.ToString() 
         name = Path.ChangeExtension(name, Path.GetExtension(outputFile)) 
         Dim pageFile As String = Path.Combine(Path.GetDirectoryName(outputFile), name) 
 
         ' Save this page 
         multiPageImage.Page = pageNumber 
         rasterCodecs.Save(multiPageImage, pageFile, format, 0) 
      Next 
 
      multiPageImage.Page = originalPageNumber 
   End If 
End Sub 
 
Public Shared Sub FormatSupportsMultipageSaveExample() 
   Dim inDir As String = LEAD_VARS.ImagesDir 
   Dim outDir As String = Path.Combine(inDir, "FormatSupportsMultipageSave") 
 
   If Not Directory.Exists(outDir) Then 
      Directory.CreateDirectory(outDir) 
   End If 
 
   Using rasterCodecs As New RasterCodecs() 
      ' Create a multi-page image 
      Using multiPageImage As RasterImage = GetMultipageImage(rasterCodecs, inDir) 
         ' Save the image as TIF, this should create a single file 
         SaveMultiPageFile(rasterCodecs, multiPageImage, Path.Combine(outDir, "out.tif"), RasterImageFormat.Tif) 
 
         ' Save the image as PNG, this should create multiple files (one for each page) 
         SaveMultiPageFile(rasterCodecs, multiPageImage, Path.Combine(outDir, "out.png"), RasterImageFormat.Png) 
      End Using 
   End Using 
End Sub 
 
Private Shared Function GetMultipageImage(rasterCodecs As RasterCodecs, inDir As String) As RasterImage 
   ' Create a multi-page image from some known LEADTOOLS images 
   Dim multiPageImage As RasterImage = Nothing 
 
   For imageNumber As Integer = 1 To 4 
      Dim fileName As String = Path.Combine(inDir, "Ocr" + imageNumber.ToString() + ".tif") 
 
      Dim pageImage As RasterImage = rasterCodecs.Load(fileName, 1) 
      If IsNothing(multiPageImage) Then 
         multiPageImage = pageImage 
      Else 
         multiPageImage.AddPage(pageImage) 
         pageImage.Dispose() 
      End If 
   Next 
 
   Return multiPageImage 
End Function 
 
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