public FileBasedScannedImage(Bitmap img, ScanBitDepth bitDepth, bool highQuality) { Bitmap baseImage; MemoryStream baseImageEncoded; ScannedImageHelper.GetSmallestBitmap(img, bitDepth, highQuality, out baseImage, out baseImageEncoded, out baseImageFileFormat); baseImageFileName = (_recoveryFileNumber++).ToString("D5", CultureInfo.InvariantCulture) + GetExtension(baseImageFileFormat); baseImageFilePath = Path.Combine(RecoveryFolder.FullName, baseImageFileName); if (baseImage != null) { // TODO: If I'm stuck using PNG anyway, then don't treat B&W specially baseImage.Save(baseImageFilePath, baseImageFileFormat); baseImage.Dispose(); } else { Debug.Assert(baseImageEncoded != null); using (var fs = new FileStream(baseImageFilePath, FileMode.CreateNew)) { baseImageEncoded.Seek(0, SeekOrigin.Begin); baseImageEncoded.CopyTo(fs); } baseImageEncoded.Dispose(); } _recoveryIndexManager.Index.Images.Add(new RecoveryIndexImage { FileName = baseImageFileName, BitDepth = bitDepth, HighQuality = highQuality, TransformList = transformList }); _recoveryIndexManager.Save(); }