Leadtools.Codecs Namespace > RasterCodecs Class > CompactFile Method : CompactFile(String,String,Int32) Method |
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 )
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.
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
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