Reinstate Dispose before file delete, remove useless image clone

This commit is contained in:
Charles Milette 2018-10-01 16:35:59 -04:00
parent 9a20831dfa
commit 12d5010769
No known key found for this signature in database
GPG key ID: 1A5AE81377AD973A
2 changed files with 80 additions and 81 deletions

View file

@ -423,7 +423,7 @@ private static void task_TaskCompleted(WorkerTask task)
};
if (info.DataType == EDataType.Image)
{
toastConfig.Image = task.GetImage();
toastConfig.Image = task.Image;
}
NotificationForm.Show((int)(info.TaskSettings.AdvancedSettings.ToastWindowDuration * 1000),
(int)(info.TaskSettings.AdvancedSettings.ToastWindowFadeDuration * 1000),

View file

@ -55,8 +55,8 @@ public class WorkerTask : IDisposable
public bool StopRequested { get; private set; }
public bool RequestSettingUpdate { get; private set; }
public Stream Data { get; private set; }
public Image Image { get; private set; }
private Image tempImage;
private string tempText;
private ThreadWorker threadWorker;
private GenericUploader uploader;
@ -112,7 +112,7 @@ public static WorkerTask CreateFileUploaderTask(string filePath, TaskSettings ta
if (task.Info.TaskSettings.AdvancedSettings.ProcessImagesDuringFileUpload && task.Info.DataType == EDataType.Image)
{
task.Info.Job = TaskJob.Job;
task.tempImage = ImageHelpers.LoadImage(task.Info.FilePath);
task.Image = ImageHelpers.LoadImage(task.Info.FilePath);
}
else
{
@ -142,7 +142,7 @@ public static WorkerTask CreateImageUploaderTask(ImageInfo imageInfo, TaskSettin
task.Info.FileName = TaskHelpers.GetFilename(taskSettings, "bmp", imageInfo);
}
task.tempImage = imageInfo.Image;
task.Image = imageInfo.Image;
return task;
}
@ -304,7 +304,14 @@ private void ThreadDoWork()
}
finally
{
if (Info.Job == TaskJob.Job && Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.DeleteFile) && !string.IsNullOrEmpty(Info.FilePath) && File.Exists(Info.FilePath))
bool hasFile = !string.IsNullOrEmpty(Info.FilePath) && File.Exists(Info.FilePath);
if (hasFile || Info.DataType != EDataType.Image)
{
Dispose();
}
if (Info.Job == TaskJob.Job && Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.DeleteFile) && hasFile)
{
File.Delete(Info.FilePath);
}
@ -554,16 +561,16 @@ private bool DoThreadJob()
private bool DoAfterCaptureJobs()
{
if (tempImage == null)
if (Image == null)
{
return true;
}
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AddImageEffects))
{
tempImage = TaskHelpers.AddImageEffects(tempImage, Info.TaskSettings.ImageSettingsReference);
Image = TaskHelpers.AddImageEffects(Image, Info.TaskSettings.ImageSettingsReference);
if (tempImage == null)
if (Image == null)
{
DebugHelper.WriteLine("Error: Applying image effects resulted empty image.");
return false;
@ -572,9 +579,9 @@ private bool DoAfterCaptureJobs()
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AnnotateImage))
{
tempImage = TaskHelpers.AnnotateImage(tempImage, null, Info.TaskSettings, true);
Image = TaskHelpers.AnnotateImage(Image, null, Info.TaskSettings, true);
if (tempImage == null)
if (Image == null)
{
return false;
}
@ -582,95 +589,92 @@ private bool DoAfterCaptureJobs()
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyImageToClipboard))
{
ClipboardHelpers.CopyImage(tempImage);
ClipboardHelpers.CopyImage(Image);
DebugHelper.WriteLine("Image copied to clipboard.");
}
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SendImageToPrinter))
{
TaskHelpers.PrintImage(tempImage);
TaskHelpers.PrintImage(Image);
}
if (Info.TaskSettings.AfterCaptureJob.HasFlagAny(AfterCaptureTasks.SaveImageToFile, AfterCaptureTasks.SaveImageToFileWithDialog, AfterCaptureTasks.DoOCR,
AfterCaptureTasks.UploadImageToHost))
{
using (var image = (Image)tempImage.Clone())
ImageData imageData = TaskHelpers.PrepareImage(Image, Info.TaskSettings);
Data = imageData.ImageStream;
Info.FileName = Path.ChangeExtension(Info.FileName, imageData.ImageFormat.GetDescription());
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFile))
{
ImageData imageData = TaskHelpers.PrepareImage(image, Info.TaskSettings);
Data = imageData.ImageStream;
Info.FileName = Path.ChangeExtension(Info.FileName, imageData.ImageFormat.GetDescription());
string filePath = TaskHelpers.HandleExistsFile(Info.TaskSettings.CaptureFolder, Info.FileName, Info.TaskSettings);
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFile))
if (!string.IsNullOrEmpty(filePath))
{
string filePath = TaskHelpers.HandleExistsFile(Info.TaskSettings.CaptureFolder, Info.FileName, Info.TaskSettings);
if (!string.IsNullOrEmpty(filePath))
{
Info.FilePath = filePath;
imageData.Write(Info.FilePath);
DebugHelper.WriteLine("Image saved to file: " + Info.FilePath);
}
Info.FilePath = filePath;
imageData.Write(Info.FilePath);
DebugHelper.WriteLine("Image saved to file: " + Info.FilePath);
}
}
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFileWithDialog))
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFileWithDialog))
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
bool imageSaved;
bool imageSaved;
do
do
{
if (string.IsNullOrEmpty(lastSaveAsFolder) || !Directory.Exists(lastSaveAsFolder))
{
if (string.IsNullOrEmpty(lastSaveAsFolder) || !Directory.Exists(lastSaveAsFolder))
{
lastSaveAsFolder = Info.TaskSettings.CaptureFolder;
}
lastSaveAsFolder = Info.TaskSettings.CaptureFolder;
}
sfd.InitialDirectory = lastSaveAsFolder;
sfd.FileName = Info.FileName;
sfd.DefaultExt = Path.GetExtension(Info.FileName).Substring(1);
sfd.Filter = string.Format("*{0}|*{0}|All files (*.*)|*.*", Path.GetExtension(Info.FileName));
sfd.Title = Resources.UploadTask_DoAfterCaptureJobs_Choose_a_folder_to_save + " " + Path.GetFileName(Info.FileName);
sfd.InitialDirectory = lastSaveAsFolder;
sfd.FileName = Info.FileName;
sfd.DefaultExt = Path.GetExtension(Info.FileName).Substring(1);
sfd.Filter = string.Format("*{0}|*{0}|All files (*.*)|*.*", Path.GetExtension(Info.FileName));
sfd.Title = Resources.UploadTask_DoAfterCaptureJobs_Choose_a_folder_to_save + " " + Path.GetFileName(Info.FileName);
if (sfd.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(sfd.FileName))
{
Info.FilePath = sfd.FileName;
lastSaveAsFolder = Path.GetDirectoryName(Info.FilePath);
imageSaved = imageData.Write(Info.FilePath);
if (sfd.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(sfd.FileName))
{
Info.FilePath = sfd.FileName;
lastSaveAsFolder = Path.GetDirectoryName(Info.FilePath);
imageSaved = imageData.Write(Info.FilePath);
if (imageSaved)
{
DebugHelper.WriteLine("Image saved to file with dialog: " + Info.FilePath);
}
}
else
if (imageSaved)
{
break;
DebugHelper.WriteLine("Image saved to file with dialog: " + Info.FilePath);
}
} while (!imageSaved);
}
}
else
{
break;
}
} while (!imageSaved);
}
}
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveThumbnailImageToFile))
{
string thumbnailFilename, thumbnailFolder;
if (!string.IsNullOrEmpty(Info.FilePath))
{
thumbnailFilename = Path.GetFileName(Info.FilePath);
thumbnailFolder = Path.GetDirectoryName(Info.FilePath);
}
else
{
thumbnailFilename = Info.FileName;
thumbnailFolder = Info.TaskSettings.CaptureFolder;
}
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveThumbnailImageToFile))
Info.ThumbnailFilePath = TaskHelpers.CreateThumbnail(Image, thumbnailFolder, thumbnailFilename, Info.TaskSettings);
if (!string.IsNullOrEmpty(Info.ThumbnailFilePath))
{
string thumbnailFilename, thumbnailFolder;
if (!string.IsNullOrEmpty(Info.FilePath))
{
thumbnailFilename = Path.GetFileName(Info.FilePath);
thumbnailFolder = Path.GetDirectoryName(Info.FilePath);
}
else
{
thumbnailFilename = Info.FileName;
thumbnailFolder = Info.TaskSettings.CaptureFolder;
}
Info.ThumbnailFilePath = TaskHelpers.CreateThumbnail(tempImage, thumbnailFolder, thumbnailFilename, Info.TaskSettings);
if (!string.IsNullOrEmpty(Info.ThumbnailFilePath))
{
DebugHelper.WriteLine("Thumbnail saved to file: " + Info.ThumbnailFilePath);
}
DebugHelper.WriteLine("Thumbnail saved to file: " + Info.ThumbnailFilePath);
}
}
}
@ -954,11 +958,6 @@ public UploadResult ShareURL(string url)
return null;
}
public Image GetImage()
{
return tempImage;
}
private UploadResult GetInvalidConfigResult(IUploaderService uploaderService)
{
UploadResult ur = new UploadResult();
@ -1126,10 +1125,10 @@ public void Dispose()
Data = null;
}
if (tempImage != null)
if (Image != null)
{
tempImage.Dispose();
tempImage = null;
Image.Dispose();
Image = null;
}
}
}