VintaSoft Imaging .NET SDK 12.4: Documentation for .NET developer
Vintasoft.Imaging.ImageProcessing.Color Namespace / CurvesCommand Class
Members Object Syntax Remarks Example Hierarchy Requirements SeeAlso
In This Topic
    CurvesCommand Class
    In This Topic
    Changes the color map of an image.
    Object Model
    RegionOfInterest ProcessingCommandResults CurvesCommand
    Syntax
    Remarks

    Use the Curves16Command class if if image with 8-bits per color channel must be processed.

    Example

    This C#/VB.NET code shows how to load an image from disk, change curves in the specified region of the image and save the result to a new image file.

    
    Class CurvesCommandExample
        Public Sub ProcessImage()
            ' [ do not forget to set your image file path here! ]
            ' create an image collection
            Using images As New Vintasoft.Imaging.ImageCollection()
                ' add image to the image collection
                images.Add("Flower.jpg")
                Try
                    ' create luminance map (usually luminance map is taken from convenient control)
                    Dim luminanceMap As Byte() = New Byte(255) {}
                    For i As Integer = 0 To 127
                        luminanceMap(i) = CByte(i)
                    Next
                    For i As Integer = 128 To 254
                        luminanceMap(i) = CByte(255 - i)
                    Next
    
                    ' create the image processing command
                    Dim command As New Vintasoft.Imaging.ImageProcessing.Color.CurvesCommand(luminanceMap)
    
                    ' subscribe to progress event of image processing command
                    AddHandler command.Progress, New System.EventHandler(Of Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs)(AddressOf command_Progress)
    
                    Try
                        ' for each image in image collection
                        For Each image As Vintasoft.Imaging.VintasoftImage In images
                            ' set the region-of-interest to the left part of the image
                            command.RegionOfInterest = New Vintasoft.Imaging.RegionOfInterest(0, 0, image.Width \ 2, image.Height)
                            ' apply the image processing command to the image
                            command.ExecuteInPlace(image)
                        Next
                    Catch ex As Vintasoft.Imaging.ImageProcessing.ImageProcessingException
                        ' show error message
                        System.Windows.Forms.MessageBox.Show(ex.Message)
                        Return
                    End Try
    
                    ' save the processed image collection to a new TIFF file
                    images.SaveSync("processed-image.tif")
                Finally
                    images.ClearAndDisposeItems()
                End Try
            End Using
        End Sub
    
        Private Sub command_Progress(sender As Object, e As Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs)
            ' update progress info using e.Progress property
            ' ...
    
            ' cancel execution of command using e.Cancel property if necessary
            ' ...
        End Sub
    End Class
    
    
    
    class CurvesCommandExample
    {
        public void ProcessImage()
        {
            // [ do not forget to set your image file path here! ]
            // create an image collection
            using (Vintasoft.Imaging.ImageCollection images = new Vintasoft.Imaging.ImageCollection())
            {
                // add image to the image collection
                images.Add("Flower.jpg");
                try
                {
                    // create luminance map (usually luminance map is taken from convenient control)
                    byte[] luminanceMap = new byte[256];
                    for (int i = 0; i < 128; i++)
                    {
                        luminanceMap[i] = (byte)(i);
                    }
                    for (int i = 128; i < 255; i++)
                    {
                        luminanceMap[i] = (byte)(255 - i);
                    }
    
                    // create the image processing command
                    Vintasoft.Imaging.ImageProcessing.Color.CurvesCommand command =
                        new Vintasoft.Imaging.ImageProcessing.Color.CurvesCommand(luminanceMap);
    
                    // subscribe to progress event of image processing command
                    command.Progress +=
                        new System.EventHandler<Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs>(command_Progress);
    
                    try
                    {
                        // for each image in image collection
                        foreach (Vintasoft.Imaging.VintasoftImage image in images)
                        {
                            // set the region-of-interest to the left part of the image
                            command.RegionOfInterest = new Vintasoft.Imaging.RegionOfInterest(0, 0, image.Width / 2, image.Height);
                            // apply the image processing command to the image
                            command.ExecuteInPlace(image);
                        }
                    }
                    catch (Vintasoft.Imaging.ImageProcessing.ImageProcessingException ex)
                    {
                        // show error message
                        System.Windows.Forms.MessageBox.Show(ex.Message);
                        return;
                    }
    
                    // save the processed image collection to a new TIFF file
                    images.SaveSync("processed-image.tif");
                }
                finally
                {
                    images.ClearAndDisposeItems();
                }
            }
        }
    
        void command_Progress(object sender, Vintasoft.Imaging.ImageProcessing.ImageProcessingProgressEventArgs e)
        {
            // update progress info using e.Progress property
            // ...
    
            // cancel execution of command using e.Cancel property if necessary
            // ...
        }
    }
    
    

    Inheritance Hierarchy

    System.Object
       Vintasoft.Imaging.ImageProcessing.ProcessingCommandBase
          Vintasoft.Imaging.ImageProcessing.ProcessingCommandWithRegion
             Vintasoft.Imaging.ImageProcessing.Color.CurvesCommand

    Requirements

    Target Platforms: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also