protected override bool Execute(ImageProcessingContext context) { FastBitMap bmpSource; if (!context.TryGetImage(ImageName, out bmpSource)) { ExecutionMessage = string.Format("Image named '{0}' has not been found in current processing context", ImageName); return(false); } try { bmpSource.Picture.Save(FileName, Format); } catch (Exception ex) { ExecutionMessage = ex.Message; #if DEBUG throw; #else return(false); #endif } return(true); }
public bool Run(IEnumerable <ImageProcessingTask> tasks, out TimeSpan totalTimeSpent) { var timeStart = DateTime.UtcNow; var context = new ImageProcessingContext(); var result = tasks.All(task => task.Run(context)); totalTimeSpent = DateTime.UtcNow - timeStart; return(result); }
public virtual bool Run(out TimeSpan totalTimeSpent) { var timeStart = DateTime.UtcNow; var context = new ImageProcessingContext(); var result = GetTasks().All(task => task.Run(context)); totalTimeSpent = DateTime.UtcNow - timeStart; return(result); }
public bool Run(ImageProcessingContext context) { IsComplete = false; var timeStart = DateTime.UtcNow; var result = Execute(context); TimeSpentOnExecution = DateTime.UtcNow - timeStart; IsComplete = true; return(result); }
protected override bool Execute(ImageProcessingContext context) { FastBitMap bmp; if (!context.TryGetImage(ImageFileName, out bmp)) { ExecutionMessage = string.Format("Image named '{0}' has not been found in current processing context", ImageFileName); return(false); } switch (LockMode) { case ImageLockMode.ReadOnly: if (bmp.CanWrite) { bmp.CanWrite = false; } if (!bmp.CanRead) { bmp.CanRead = true; } break; case ImageLockMode.WriteOnly: if (!bmp.CanWrite) { bmp.CanWrite = true; } if (bmp.CanRead) { bmp.CanRead = false; } break; case ImageLockMode.ReadWrite: if (!bmp.CanReadAndWrite) { bmp.CanReadAndWrite = true; } break; case ImageLockMode.UserInputBuffer: if (bmp.CanRead || bmp.CanWrite) { bmp.CanReadAndWrite = false; } break; default: ExecutionMessage = string.Format("Passed LockMode value ({0}) is out of range", (int)LockMode); return(false); } return(true); }
protected override bool Execute(ImageProcessingContext context) { FastBitMap bmpSource, bmpTarget; if (!context.TryGetImage(SourceImageFileName, out bmpSource)) { ExecutionMessage = string.Format("Image named '{0}' has not been found in current processing context", SourceImageFileName); return(false); } if (!context.TryGetImage(TargetImageFileName, out bmpTarget)) { ExecutionMessage = string.Format("Image named '{0}' has not been found in current processing context", TargetImageFileName); return(false); } for (var i = 0; i < ThreadsToUse; ++i) { context.ThreadList.Add(new ImageProcessingThread()); } var xBlocks = (int)Math.Ceiling((float)bmpSource.Width / MaxFragmentWidth); var yBlocks = (int)Math.Ceiling((float)bmpSource.Height / MaxFragmentHeight); for (var by = 0; by <= yBlocks; ++by) { for (var bx = 0; bx <= xBlocks; ++bx) { var x = bx * MaxFragmentWidth; var y = by * MaxFragmentHeight; var w = Math.Min(bmpSource.Width - x, MaxFragmentWidth); var h = Math.Min(bmpSource.Height - y, MaxFragmentHeight); context.ThreadList[(by * bmpSource.Width + bx) % ThreadsToUse].PushTask(new Rectangle(x, y, w, h)); } } for (var i = 0; i < ThreadsToUse; ++i) { context.ThreadList[i].Start(new ImageProcessingThreadContext { Original = bmpSource, Processor = PixelProcessor, Result = bmpTarget, ThreadCount = ThreadsToUse, ThreadID = i }); } for (var i = 0; i < ThreadsToUse; ++i) { context.ThreadList[i].Wait(); } return(true); }
protected override bool Execute(ImageProcessingContext context) { FastBitMap bmpSource; if (!context.TryGetImage(SourceImageFileName, out bmpSource)) { ExecutionMessage = string.Format("Image named '{0}' has not been found in current processing context", SourceImageFileName); return(false); } context.Images[TargetImageName] = new FastBitMap(new Bitmap(bmpSource.Width, bmpSource.Height, PixelFormat.Format32bppArgb)); return(true); }
protected override bool Execute(ImageProcessingContext context) { try { var bitmap = new Bitmap(FileName); LoadedImage = new FastBitMap(bitmap); context.Images[FileName] = LoadedImage; return(true); } catch (Exception ex) { ExecutionMessage = ex.Message; #if DEBUG throw; #else return(false); #endif } }
protected abstract bool Execute(ImageProcessingContext context);