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

CompactFile(String,String,Int32) Method

Example 





A System.String containing the name of the file being compacted. All the pages will be read from this file.
A System.String containing the name of the file in which all the pages will be written.
Value that represents the number of pages to copy. Use 0 to copy all the pages. If pages is > 0, only pages will be copied to destFileName.
Compacts TIFF files with default options. .NET support Silverlight support
Syntax
public void CompactFile( 
   string srcFileName,
   string destFileName,
   int pages
)
'Declaration
 
Public Overloads Sub CompactFile( _
   ByVal srcFileName As String, _
   ByVal destFileName As String, _
   ByVal pages As Integer _
) 
'Usage
 
Dim instance As RasterCodecs
Dim srcFileName As String
Dim destFileName As String
Dim pages As Integer
 
instance.CompactFile(srcFileName, destFileName, pages)
public void CompactFile( 
   string srcFileName,
   string destFileName,
   int pages
)
 function Leadtools.Codecs.RasterCodecs.CompactFile(String,String,Int32)( 
   srcFileName ,
   destFileName ,
   pages 
)
public:
void CompactFile( 
   String^ srcFileName,
   String^ destFileName,
   int pages
) 

Parameters

srcFileName
A System.String containing the name of the file being compacted. All the pages will be read from this file.
destFileName
A System.String containing the name of the file in which all the pages will be written.
pages
Value that represents the number of pages to copy. Use 0 to copy all the pages. If pages is > 0, only pages will be copied to destFileName.
Remarks

This method can also be used to copy or extract one or more pages from a TIFF file and copy them without recompression to another TIFF file. Whenever you save an image containing a region as a TIFF file format, the region is also saved. Note, however, that the ability to save a region inside a TIFF file must be unlocked. This requires a Document Imaging or Medical Imaging toolkit.

Example
 
Public Sub CompactFileExample()
      Dim codecs As RasterCodecs = New RasterCodecs()

      Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "CompactFile1_Src.tif")
      Dim destFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "CompactFile1_Dest.tif")

      ' Create a RasterImage with 4 pages containing text showing the page number
      Dim image As RasterImage = Nothing
      Const pageCount As Integer = 4

      Using f As New System.Drawing.Font("Arial", 36, System.Drawing.FontStyle.Bold)
         Using btmp As New System.Drawing.Bitmap(320, 200)
            Using sf As New System.Drawing.StringFormat()
               Dim rc As New System.Drawing.Rectangle(0, 0, btmp.Width, btmp.Height)
               sf.Alignment = System.Drawing.StringAlignment.Center
               sf.LineAlignment = System.Drawing.StringAlignment.Center

               For i As Integer = 1 To pageCount
                  ' Create a GDI+ bitmap with the text
                  Dim text As String = "Page " + i.ToString()

                  Using g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(btmp)
                     g.FillRectangle(System.Drawing.Brushes.White, rc)
                     g.DrawString(text, f, System.Drawing.Brushes.Black, rc, sf)
                  End Using

                  Dim tempImage As RasterImage = RasterImageConverter.ConvertFromImage(btmp, ConvertFromImageOptions.None)

                  If image Is Nothing Then
                     image = tempImage
                  Else
                     image.AddPage(tempImage)
                  End If
               Next
            End Using
         End Using
      End Using

      ' Save all the pages to the file
      ' The file should have 4 pages now: 1, 2, 3, 4
      codecs.Save(image, srcFileName, RasterImageFormat.Tif, 1, 1, pageCount, 1, CodecsSavePageMode.Overwrite)
      image.Dispose()

      ' All the pages in the source TIFF file. This will create the destination file
      codecs.CompactFile(srcFileName, destFileName, 0)

      ' Compact the source file again and append all the pages to the existing destination file
      Dim pagesToAdd As Integer = 0 ' 0 means all pages
      Dim srcStartPage As Integer = 1
      Dim destStartPage As Integer = 5 ' insert at the end

      codecs.CompactFile(srcFileName, destFileName, pagesToAdd, srcStartPage, False, 0, destStartPage, False, 0, CodecsSavePageMode.Insert, False, False)

      ' Clean up
      codecs.Dispose()
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public void CompactFileExample()
     {
         RasterCodecs codecs = new RasterCodecs();

         string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "CompactFile1_Src.tif");
         string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "CompactFile1_Dest.tif");

         // Create a RasterImage with 4 pages containing text showing the page number
         RasterImage image = null;
         const int pageCount = 4;

         using (System.Drawing.Font f = new System.Drawing.Font("Arial", 36, System.Drawing.FontStyle.Bold))
         using (System.Drawing.Bitmap btmp = new System.Drawing.Bitmap(320, 200))
         using (System.Drawing.StringFormat sf = new System.Drawing.StringFormat())
         {
             System.Drawing.Rectangle rc = new System.Drawing.Rectangle(0, 0, btmp.Width, btmp.Height);
             sf.Alignment = System.Drawing.StringAlignment.Center;
             sf.LineAlignment = System.Drawing.StringAlignment.Center;

             for (int i = 1; i <= pageCount; i++)
             {
                 // Create a GDI+ bitmap with the text
                 string text = "Page " + i;

                 using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(btmp))
                 {
                     g.FillRectangle(System.Drawing.Brushes.White, rc);
                     g.DrawString(text, f, System.Drawing.Brushes.Black, rc, sf);
                 }

                 RasterImage tempImage = Leadtools.Drawing.RasterImageConverter.ConvertFromImage(btmp, Leadtools.Drawing.ConvertFromImageOptions.None);

                 if (image == null)
                     image = tempImage;
                 else
                     image.AddPage(tempImage);
             }
         }

         // Save all the pages to the file
         // The file should have 4 pages now: 1, 2, 3, 4
         codecs.Save(image, srcFileName, RasterImageFormat.Tif, 1, 1, pageCount, 1, CodecsSavePageMode.Overwrite);
         image.Dispose();

         // All the pages in the source TIFF file. This will create the destination file
         codecs.CompactFile(srcFileName, destFileName, 0);

         // Compact the source file again and append all the pages to the existing destination file
         int pagesToAdd = 0;  // 0 means all pages
         int srcStartPage = 1;
         int destStartPage = 5;  // insert at the end

         codecs.CompactFile(
            srcFileName,
            destFileName,
            pagesToAdd,
            srcStartPage,
            false,
            0,
            destStartPage,
            false,
            0,
            CodecsSavePageMode.Insert,
            false,
            false);

         // Clean up
         codecs.Dispose();
     }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
public void CompactFileExample(Stream dstStream, int width, int height, int pageCount)
{
   // Create a RasterImage with number of pages containing text showing the page number
   RasterImage image = null;
   // The white background canvas
   Canvas canvas = new Canvas();
   canvas.Width = width;
   canvas.Height = height;
   canvas.Background = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));

   // The black text block
   TextBlock textBlock = new TextBlock();
   textBlock.FontFamily = new FontFamily("Arial");
   textBlock.FontSize = 36;
   textBlock.Foreground = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
   canvas.Children.Add(textBlock);

   for (int i = 1; i <= pageCount; i++)
   {
      // The text we want on the page
      string text = "Page " + i;
      textBlock.Text = text;

      // Center the text
      double left = (canvas.Width - textBlock.ActualWidth) / 2;
      double top = (canvas.Height - textBlock.ActualHeight) / 2;
      textBlock.SetValue(Canvas.LeftProperty, left);
      textBlock.SetValue(Canvas.TopProperty, top);

      // Create a Writeable bitmap with the text
      WriteableBitmap wb = new WriteableBitmap(320, 200);

      wb.Render(canvas, null);
      wb.Invalidate();

      // Convert it to a RasterImage
      RasterImage pageImage = RasterImageConverter.ConvertFromSource(wb, ConvertFromSourceOptions.None);

      // Add it as a page to our main raster image
      if (image == null)
         image = pageImage;
      else
         image.AddPage(pageImage);
   }

   RasterCodecs codecs = new RasterCodecs();
   // Save all the pages to the file 
   // The file should have 4 pages now: 1, 2, 3, 4 
   codecs.Save(image, dstStream, RasterImageFormat.Tif, 1, 1, pageCount, 1, CodecsSavePageMode.Overwrite);
   image.Dispose();

   MemoryStream memoryStream = new MemoryStream((int)dstStream.Length);
   // All the pages in the source TIFF file. This will create the destination file 
   codecs.CompactFile(dstStream, memoryStream, 0);

   // Compact the source file again and append all the pages to the existing destination file 
   int pagesToAdd = 0;  // 0 means all pages 
   int srcStartPage = 1;
   int destStartPage = 5;  // insert at the end 

   codecs.CompactFile(
      dstStream,
      memoryStream,
      pagesToAdd,
      srcStartPage,
      false,
      0,
      destStartPage,
      false,
      0,
      CodecsSavePageMode.Insert,
      false,
      false); 
}
Public Sub CompactFileExample(ByVal dstStream As Stream, ByVal width As Integer, ByVal height As Integer, ByVal pageCount As Integer)
   ' Create a RasterImage with number of pages containing text showing the page number
   Dim image As RasterImage = Nothing
   ' The white background canvas
   Dim canvas As Canvas = New Canvas()
   canvas.Width = width
   canvas.Height = height
   canvas.Background = New SolidColorBrush(Color.FromArgb(255, 255, 255, 255))

   ' The black text block
   Dim textBlock As TextBlock = New TextBlock()
   textBlock.FontFamily = New FontFamily("Arial")
   textBlock.FontSize = 36
   textBlock.Foreground = New SolidColorBrush(Color.FromArgb(255, 0, 0, 0))
   canvas.Children.Add(textBlock)

   Dim i As Integer = 1
   Do While i <= pageCount
      ' The text we want on the page
      Dim text As String = "Page " & i
      textBlock.Text = text

      ' Center the text
      Dim left As Double = (canvas.Width - textBlock.ActualWidth) / 2
      Dim top As Double = (canvas.Height - textBlock.ActualHeight) / 2
      textBlock.SetValue(Canvas.LeftProperty, left)
      textBlock.SetValue(Canvas.TopProperty, top)

      ' Create a Writeable bitmap with the text
      Dim wb As WriteableBitmap = New WriteableBitmap(320, 200)

      wb.Render(canvas, Nothing)
      wb.Invalidate()

      ' Convert it to a RasterImage
      Dim pageImage As RasterImage = RasterImageConverter.ConvertFromSource(wb, ConvertFromSourceOptions.None)

      ' Add it as a page to our main raster image
      If image Is Nothing Then
         image = pageImage
      Else
         image.AddPage(pageImage)
      End If
      i += 1
   Loop

   Dim codecs As RasterCodecs = New RasterCodecs()
   ' Save all the pages to the file 
   ' The file should have 4 pages now: 1, 2, 3, 4 
   codecs.Save(image, dstStream, RasterImageFormat.Tif, 1, 1, pageCount, 1, CodecsSavePageMode.Overwrite)
   image.Dispose()

   Dim memoryStream As MemoryStream = New MemoryStream(CInt(dstStream.Length))
   ' All the pages in the source TIFF file. This will create the destination file 
   codecs.CompactFile(dstStream, memoryStream, 0)

   ' Compact the source file again and append all the pages to the existing destination file 
   Dim pagesToAdd As Integer = 0 ' 0 means all pages
   Dim srcStartPage As Integer = 1
   Dim destStartPage As Integer = 5 ' insert at the end

   codecs.CompactFile(dstStream, memoryStream, pagesToAdd, srcStartPage, False, 0, destStartPage, False, 0, CodecsSavePageMode.Insert, False, False)
End Sub
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
Overload List

 

 


Products | Support | Contact Us | Copyright Notices

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