Example #1
0
 private void SaveLastImage(string filePrefix, ImageSavingType savingType, int? errorCode)
 {
     Logger.LogVerbose(Message.RecognizerSaveImageCall, filePrefix, savingType);
     if (savingType == ImageSavingType.None)
         return;
     try
     {
         if (!ReserveSpaceForSaveLastBuffer(savingType))
             return;
         Logger.LogVerbose(Message.RecognizerSavingImage);
         var savingStartTime = DateTime.Now;
         var filePathSb = GetImageFileName(filePrefix);
         var imageDirectoryPath = _fileSystemManager.GetDataDirectoryPath(FileType.ScanningImage);
         filePathSb.Insert(0, imageDirectoryPath + '/');
         var filePath = filePathSb.ToString();
         if (errorCode != null)
             filePathSb.Append("_E" + errorCode);
         if (savingType == ImageSavingType.Binary || savingType == ImageSavingType.All)
         {
             _scannerManager.SaveBuffer(
                 filePath + "_B", ImageType.Binary, ScannedSide.Bottom, BufferSize.Scanned);
         }
         if (savingType == ImageSavingType.Halftone || savingType == ImageSavingType.All)
         {
             _scannerManager.SaveBuffer(
                 filePath + "_H", ImageType.Halftone, ScannedSide.Bottom, BufferSize.Scanned);
             SystemHelper.SyncFileSystem();
         }
         Logger.LogVerbose(
             Message.RecognizerSaveImageTiming, (DateTime.Now - savingStartTime).TotalMilliseconds);
     }
     catch (Exception ex)
     {
         Logger.LogWarning(Message.RecognizerSaveImageError, ex);
         _scannerManager.RestoreScanningAfterError();
     }
     finally
     {
         Logger.LogVerbose(Message.Common_DebugReturn);
     }
 }
Example #2
0
 private bool ReserveSpaceForSaveLastBuffer(ImageSavingType savingType)
 {
     try
     {
         long requiredSize;
         switch (savingType)
         {
             case ImageSavingType.Binary:
                 requiredSize = _scannerManager.GetBufferSize(ImageType.Binary, BufferSize.Scanned);
                 break;
             case ImageSavingType.Halftone:
                 requiredSize = _scannerManager.GetBufferSize(ImageType.Halftone, BufferSize.Scanned);
                 break;
             case ImageSavingType.All:
                 requiredSize = _scannerManager.GetBufferSize(ImageType.Binary, BufferSize.Scanned) +
                     _scannerManager.GetBufferSize(ImageType.Halftone, BufferSize.Scanned);
                 break;
             default:
                 throw new Exception("Неизвестный тип сохранения изображения");
         }
         if (!ReserveSpaceForImage(_config.MinFreeSpaceForImageKb.Value, requiredSize))
             return false;
     }
     catch (Exception ex)
     {
         Logger.LogWarning(Message.RecognizerSaveImageError, ex);
         _scannerManager.RestoreScanningAfterError();
         return false;
     }
     return true;
 }