VintaSoft Imaging .NET SDK and Plug-ins Discussions

Questions, comments and suggestions concerning VintaSoft Imaging .NET SDK.

Board index < VintaSoft Imaging < VintaSoft Imaging .NET SDK and Plug-ins Discussions

We are migrating to new forums engine, no new registration or posting currently available. TIA for your patience.

Execute more then one command on ImageProcessingPreview



Execute more then one command on ImageProcessingPreview

Post by SteveK »

Hello VintaSoft Team,
my company plans to purchase Imaging.NET SDK. Therefore I was asked to test the evaluate version, by writing a small test program that would use the functions we need.

I looked at the ImagingDemo project, and want to create a ImageProcessing Dialog that handles brightness/contrast command as well as hue/saturation/luminance command.

When I perform both commands behind each other using the ExecuteInPlace function it works as expected.
imageViewer1.Images.Add(filename);

Vintasoft.Imaging.ImageProcessing.Color.ChangeBrightnessContrastCommand command =
 new Vintasoft.Imaging.ImageProcessing.Color.ChangeBrightnessContrastCommand(50, 5);
command.ExecuteInPlace(imageViewer1.FocusedImage);

Vintasoft.Imaging.ImageProcessing.Color.ChangeHueSaturationLuminanceCommand command2 =
 new Vintasoft.Imaging.ImageProcessing.Color.ChangeHueSaturationLuminanceCommand(0, -100, 0);
command2.ExecuteInPlace(imageViewer1.FocusedImage);
When I anyhow try to do it with an ImageProcessingPreview object, I can only perform one of the two commands, the other gets lost or not executed. I'm not sure if I miss something or if the current version of the Assembly (4.3.33.1) even possible. The code I have currently looks like this, but the Brightness / Contrast command seems to be not executed:
public ColorEditingDialog(VintasoftImage image,                                   Rectangle processingRectangle) : this()
{
ImageProcessingPreview imgPreview;
imgPreview = new ImageProcessingPreview(previewImageViewer, image, processingRectangle);

ProcessingCommandBase command1 = GetProcessingCommand1(50, 5);
if (command1 != null)
   imgPreview.ExecuteProcessing(command1);

ProcessingCommandBase command2 = GetProcessingCommand2(0, -100, 0);
if (command2 != null)
   imgPreview.ExecuteProcessing(command2);
}

protected virtual ProcessingCommandBase GetProcessingCommand1(Int32 b, Int32 c)
{
return new Vintasoft.Imaging.ImageProcessing.Color.ChangeBrightnessContrastCommand(b, c);
}

protected virtual ProcessingCommandBase GetProcessingCommand2(Int32 h, Int32 s, Int32 l)
{
return new Vintasoft.Imaging.ImageProcessing.Color.ChangeHueSaturationLuminanceCommand(h, s, l);
}
What I now like to know is, if I do something wrong or if its even possible to do this.

Best regards
Steve Kirchmer


Re: Execute more then one command on ImageProcessingPreview

Post by Alex »

Hello Steve,

Sorry for a delay.

Please send us a project (to support@vintasoft.com) which demonstrates your problem - we need to reproduce the problem.

Best regards, Alexander


Re: Execute more then one command on ImageProcessingPreview

Post by SteveK »

Hello Alexander,

I excause me for my delay as well. I haven't been in the office for the past two weeks.
I packed my current work project in a Zip and sended it to the support address as you suggested.

Thanks for responding to me question.

Best Regards
Steve


Re: Execute more then one command on ImageProcessingPreview

Post by Alex »

Hello Steve,

Your code has logical mistake.

Here is your code:
public void ExecuteProcessing(ProcessingCommandBase command)
{
   if (!_enabled)
       return;

   // clone preview image
   // NEXT CODE LINE HAS LOGICAL MISTAKE
   using (VintasoftImage processedImage = new VintasoftImage(_thumbnail.GetAsBitmap(), false))
   {
      // process image in place
      command.ExecuteInPlace(processedImage);

      // preview processing image
      _imageViewer.Image.SetImage(processedImage);
   }
}
You store an original image in the _thumbnail object, you store processed image in the _imageViewer.Image object - these objects are different and images of these objects also are different.

You need to execute both processing commands at one moment.
Here is possible code:
public void ExecuteProcessing(ProcessingCommandBase command1, ProcessingCommandBase command2)
{
   if (!_enabled)
      return;

   // clone preview image
   using (VintasoftImage processedImage = new VintasoftImage(_thumbnail.GetAsBitmap(), false))
   {
      // process image in place
      command1.ExecuteInPlace(processedImage);
      command2.ExecuteInPlace(processedImage);

      // preview processing image
      _imageViewer.Image.SetImage(processedImage);
   }
}
Best regards, Alexander


Page 1 from 1: 1