VintaSoft Imaging .NET SDK 15.1: 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 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

See Also