LOptimize::OptimizeDir
#include "ltwrappr.h"
L_INT LOptimize::OptimizeDir(pszOrgDirPath, pszOptDirPath, pOptImgOptions, pszFilesExt, bIncludeSubDirs)
| /* full path directory to optimize */ | |
| /* full path directory to save optimized images */ | |
| pOPTIMIZEIMAGEOPTIONS pOptImgOptions; | /* pointer to the OPTIMIZEIMAGEOPTIONS structure */ | 
| /* files extension(s) to optimize */ | |
| L_BOOL bIncludeSubDirs; | /* flag that indicates whether to include sub-directories */ | 
Optimizes a directory of images using the specified optimization options, and saves the optimized images to a new directory with the same hierarchy.
| Parameter | Description | |
| pszOrgDirPath | Character string that contains the full path directory of the supported images to optimize. | |
| pszOptDirPath | Character string that contains the full path directory to save the optimized image(s). | |
| pOptImgOptions | Pointer to an OPTIMIZEIMAGEOPTIONS structure that contains the options used in optimization. Pass NULL to use the default optimization options. | |
| pszFilesExt | Pointer to a character string that contains the extensions of the files to optimize. This is a NULL terminated string and can have a maximum length of MAX_PATH. For example: 
 
 | |
| bIncludeSubDirs | Flag that indicates whether to include sub-directories when optimizing. Possible values are: | |
| 
 | Value | Meaning | 
| 
 | TRUE | Include sub-directories when optimizing. | 
| 
 | FALSE | Exclude sub-directories when optimizing. | 
Returns
| SUCCESS | The function was successful. | 
| < 1 | An error occurred. Refer to Return Codes. | 
Comments
This function looks for all the selected and supported files in the pszOrgDirPath directory and optimizes them using the optimization options passed in the pOptImgOptions parameter. It then saves the optimized images to the pszOptDirPath directory.
Both the pszOrgDirPath and pszOptDirPath parameters should contain a full path, complete with drive name. The pszOrgDirPath parameter should contain the full path to the input (original) directory, and the pszOptDirPath parameter should contain the full path to the output (optimized) directory.
Required DLLs and Libraries
| LTIMGOPT For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. | 
See Also
| Functions: | LOptimize::GetDefaultOptions, LOptimize::OptimizeBuffer, LOptimize::OptimizeDirCallBack, LOptimize::OptimizeBufferCallBack, Class Members | 
| Topics: | |
| 
 | 
Example
L_INT LOptimizeChild::OptimizeDirCallBack(pOPTIMIZEIMAGEDIRINFO 
 pOptImgDirCBInfo)
{
   // Check if pOPTIMIZEIMAGEDIRINFO data is a valid pointer
   if(pOptImgDirCBInfo)
   {
      L_TCHAR buf[200]; // Message buffer
      switch(pOptImgDirCBInfo->nStatusCode)
      {
         case OPTIMIZE_DIR_PRE_OPTIMIZINGIMAGE: 
 /* Pre Optimizing Image */
         {
            MessageBox(NULL, 
 TEXT("Pre Optimize Image"), TEXT("Note"), MB_OK);
            if((pOptImgDirCBInfo->pFileInfo->Format 
 == FILE_JPEG) ||
               (pOptImgDirCBInfo->pFileInfo->Format 
 == FILE_JPEG_411) ||
               (pOptImgDirCBInfo->pFileInfo->Format 
 == FILE_JPEG_422) ||
               (pOptImgDirCBInfo->pFileInfo->Format 
 == FILE_EXIF_JPEG_411) ||
               (pOptImgDirCBInfo->pFileInfo->Format 
 == FILE_EXIF_JPEG_422))
               pOptImgDirCBInfo->pOptImgOptions->JPEGColorSpace 
 = JPEG_COLORSPACE_422;
         }
         break;
         case OPTIMIZE_DIR_OPTIMIZINGIMAGE: 
 /* Optimizing ... */
         {
            static 
 i = 1; // Optimized files counter
            // 
 display the current file and total percent
            wsprintf(buf, 
 TEXT("%d %% of optimizing %s to %s \nFiles %d of %d"), pOptImgDirCBInfo->nFilePercent, 
 pOptImgDirCBInfo->szOrgFileName, pOptImgDirCBInfo->szOptFileName, 
 i, pOptImgDirCBInfo->nTotalFolderFilesCount);
            MessageBox(NULL, 
 buf, TEXT("Optimizing"), MB_OK);
            // 
 if nFilePercent = 100 increment the counter by 1
            if((pOptImgDirCBInfo->nFilePercent 
 == 100) && ((i + 1) <= pOptImgDirCBInfo->nTotalFolderFilesCount))
            i++;
         }
         break;
         case SUCCESS: /* 
 Optimizing operation Successfully done */
         {
            MessageBox(NULL, 
 TEXT("Operation Successfully Done"), TEXT("Optimizing"), 
 MB_OK);
         }
         break;
         default:
         {
            /* 
 report error to user */
            /* 
 Give the user the ability to skip the current image only or cancel the 
 whole operation*/
            wsprintf(buf, 
 TEXT("Error: %d - Optimizing Image!\n%s\nPress OK to skip this file 
 and optimize the next one!"), pOptImgDirCBInfo->nStatusCode, pOptImgDirCBInfo->szOrgFileName);
            if(MessageBox(NULL, 
 buf, TEXT("Error"), MB_OKCANCEL|MB_ICONERROR) == IDOK)
               return(ERROR_OPT_SKIPIMAGE);
            else
               return(ERROR_OPT_ABORT);
         }
         break;
      }
   }
   return SUCCESS;
}
void OptimizeDirExample() 
{
   pOPTIMIZEIMAGEOPTIONS pOptImgOptions = NULL ;
   L_INT nRet ;
   LOptimizeChild opt ;
   opt.EnableCallBack(TRUE) 
 ;
   nRet = opt.OptimizeDir(TEXT("C:\\OriginalImages"), 
 /* The original Dir to be optimized. */
   TEXT("D:\\OptimizedImages"),/* The New Dir 
 to save the Optimized image(s) to.*/
   pOptImgOptions, /* Optimization options.*/
   TEXT("*.jpg;*.gif;*.bmp;"), /* optimize all 
 images with ext jpg, bmp and bmp only.*/
   TRUE /* Optimize or not the sub-dirs.*/);
}