Adjusts an image's brightness, contrast and gamma as well as it may optionally invert the image within a single operation.

Namespace:  FreeImageAPI
Assembly:  FreeImageNET (in FreeImageNET.dll)

Syntax

C#
public static bool AdjustColors(
	FIBITMAP dib,
	double brightness,
	double contrast,
	double gamma,
	bool invert
)
Visual Basic (Declaration)
Public Shared Function AdjustColors ( _
	dib As FIBITMAP, _
	brightness As Double, _
	contrast As Double, _
	gamma As Double, _
	invert As Boolean _
) As Boolean
Visual C++
public:
static bool AdjustColors(
	FIBITMAP dib, 
	double brightness, 
	double contrast, 
	double gamma, 
	bool invert
)

Parameters

dib
Type: FreeImageAPI..::.FIBITMAP
Handle to a FreeImage bitmap.
brightness
Type: System..::.Double
Percentage brightness value where -100 <= brightness <= 100.

A value of 0 means no change, less than 0 will make the image darker and greater than 0 will make the image brighter.

contrast
Type: System..::.Double
Percentage contrast value where -100 <= contrast <= 100.

A value of 0 means no change, less than 0 will decrease the contrast and greater than 0 will increase the contrast of the image.

gamma
Type: System..::.Double
Gamma value to be used for gamma correction.

A value of 1.0 leaves the image alone, less than one darkens it, and greater than one lightens it.

This parameter must not be zero or smaller than zero. If so, it will be ignored and no gamma correction will be performed on the image.
invert
Type: System..::.Boolean
If set to true, the image will be inverted.

Return Value

Returns true on success, false on failure.

Remarks

This function adjusts an image's brightness, contrast and gamma as well as it may optionally invert the image within a single operation. If more than one of these image display properties need to be adjusted, using this function should be preferred over calling each adjustment function separately. That's particularly true for huge images or if performance is an issue.

This function relies on GetAdjustColorsLookupTable(array<Byte>[]()[], Double, Double, Double, Boolean), which creates a single lookup table, that combines all adjustment operations requested.

Furthermore, the lookup table created by GetAdjustColorsLookupTable(array<Byte>[]()[], Double, Double, Double, Boolean) does not depend on the order, in which each single adjustment operation is performed. Due to rounding and byte casting issues, it actually matters in which order individual adjustment operations are performed. Both of the following snippets most likely produce different results:

CopyC#
// snippet 1: contrast, brightness
AdjustContrast(dib, 15.0);
AdjustBrightness(dib, 50.0);

CopyC#
// snippet 2: brightness, contrast
AdjustBrightness(dib, 50.0);
AdjustContrast(dib, 15.0);

Better and even faster would be snippet 3:

CopyC#
// snippet 3:
AdjustColors(dib, 50.0, 15.0, 1.0, false);

Version Information

FreeImage.NET

Supported in: 3.11.0, 3.12.0, 3.13.0, 3.13.1

See Also