#include "ltwrappr.h"

L_INT LFile::Compact(pszDstFile, uPages, pLoadFileOption, pSaveFileOption)

L_TCHAR * pszDstFile;

name of the output file

L_UINT uPages;

number of pages to copy


pointer to the LOADFILEOPTION structure


pointer to the SAVEFILEOPTION structure

Compacts TIFF / BigTIFF files. It 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.




Character string that contains the name of the file in which all the pages will be written. This cannot be NULL. If this is NULL, the function will return an error. The pages can be added to this file using the pSaveFileOption parameter.


Number of pages to copy. Use 0 to copy all the pages. If uPages is > 0, only uPages will be copied to pszDstFile.


Optional pointer to the LOADFILEOPTION structure, which can be used to specify a starting page. You can also speed up the access to the starting page using the IFD. You can pass NULL, which is equivalent to starting from the first page and to use the default load options.


Optional pointer to the SAVEFILEOPTION structure, which can be used to specify where to save the data or how to modify an existing file. You can modify whether the new pages should appended, inserted or whether they should replace existing pages. Pass NULL to use the default save options.



The function was successful.


The function encountered an error while reading a page from the source file. Not all the pages have been copied to the destination file.

ERROR_TAG_VALUE_TOO_BIG This error can occur while converting BigTIFF files to regular TIFF files when the source file contains a 64-bit integer value that cannot be converted into a 32-bit integer value due to overflow.  This error can occur because TIFF files do not support 64-bit integer values.

< 1

An error occurred. Refer to Return Codes.


This function can also be used to convert a TIFF file to BigTIFF and vice versa (BigTIFF -> TIFF).

The following members of the LOADFILEOPTION structure are important for this function:

If pSaveFileOption is NULL, then if pszDstFile exists, it will be overwritten regardless of its format. Also, defaults will be used when saving the file (it will be saved in Intel format). Refer to the SAVEFILEOPTION documentation. TIF files are saved in two possible byte orders: Intel or Motorola (see SAVEFILEOPTIONS.Flags and ESO_MOTOROLAORDER flag.

If pSaveFileOption is not NULL, the following members of the SAVEFILEOPTION structure are important for this function:

Flags: can be used to specify one or more options:

Flags2: Can be used to specify one or more of the following options:

IFD64 offsets are useful only when processing BigTIFF files in 32-bit applications. For such files, the IFD pointer can be a 64-bit value > 0xFFFFFFFF. Because IFD is already a 64-bit value in 64-bit applications, IFD64 is not defined in 64-bit applications. In addition, regular TIFF files cannot use 64-bit pointers, so it is not necessary to use IFD64 with TIFF files.

Required DLLs and Libraries



For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.


Win32, x64.

See Also


LFile::SaveFile, LFile::SaveOffset, LBitmapBase::Save, LBitmapBase::Load, LFile::LoadFile, LFile::GetInfo, LBaseFile::GetDefaultLoadFileOption, LBaseFile::GetDefaultSaveFileOption


Loading and Saving Large TIFF/BigTIFF Files


Raster Image Functions: Loading Files


Raster Image Functions: Saving Files


#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName 
// Example 1 
L_INT LFile__CompactExample_1() 
   /* This example will compact all the pages in a TIFF file. */ 
   /* It will create a new file called dstfile.tif */ 
   LFile File; 
   L_INT nRet = 0 ; 
   File.SetFileName(MAKE_IMAGE_PATH(TEXT("clean.tif"))) ; 
   nRet = File.Compact(MAKE_IMAGE_PATH(TEXT("dstfile.tif")), 0, NULL, NULL); 
   if(nRet != SUCCESS) 
      MessageBox(NULL, TEXT("Error compacting file!"), TEXT("ERROR"), MB_OK); 
      return nRet; 
   return SUCCESS; 
// Example 2 
L_INT LFile__CompactExample_2() 
   /* This example will compact all the pages in a TIFF file.*/ 
   /* It will append all the pages to an existing file called dstfile.tif */ 
   LFile File; 
   SAVEFILEOPTION SaveFileOption; 
   L_INT nRet = 0 ; 
   File.SetFileName(MAKE_IMAGE_PATH(TEXT("clean.tif"))) ; 
   File.GetDefaultSaveFileOption(&SaveFileOption, sizeof(SaveFileOption)); 
   SaveFileOption.PageNumber = 2; 
   nRet = File.Compact(MAKE_IMAGE_PATH(TEXT("dstfile.tif")), 0, NULL, &SaveFileOption); 
   if(nRet != SUCCESS) 
      MessageBox(NULL, TEXT("Error compacting file!"), TEXT("ERROR"), MB_OK); 
      return nRet; 
   return SUCCESS; 

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
LEADTOOLS Raster Imaging C++ Class Library Help