LEADTOOLS Image File Support (Leadtools.Codecs assembly)

CompactFile(String,String,Int32) Method

Show in webframe
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.
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
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Drawing

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
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;

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";
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Examples;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
using Leadtools.Windows.Media;

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); 
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Windows.Media

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

See Also

Reference

RasterCodecs Class
RasterCodecs Members
Overload List

 

 


Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.