Compacts TIFF/BigTIFF files with default options.
public void CompactFile(
string srcFileName,
string destFileName,
int pages
)
Public Overloads Sub CompactFile( _
ByVal srcFileName As String, _
ByVal destFileName As String, _
ByVal pages As Integer _
)
- (BOOL)compactFile:(NSString *)sourceFile
destinationFile:(NSString *)destinationFile
pages:(NSUInteger)pages
error:(NSError **)error
public:
void CompactFile(
String^ srcFileName,
String^ destFileName,
int pages
)
srcFileName
A String containing the name of the file being compacted. All the pages will be read from this file.
destFileName
A 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.
This method can also be used to copy or extract one or more pages from a TIFF/BigTIFF file and copy them without recompression to another TIFF/BigTIFF file.
This method can also be used to convert a TIFF file to BigTIFF or vice versa. The destination file will be Tiff or BigTiff depending on BigTiff.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
using Leadtools.Svg;
using LeadtoolsExamples.Common;
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";
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.ImageProcessing.Color
Imports Leadtools.Drawing
Imports Leadtools.Svg
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
c#[Silverlight C# Example]
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);
}
vb[Silverlight VB Example]
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
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document