Adjusts an image's brightness, contrast and gamma as well as it may
optionally invert the image within a single operation.
Namespace:
FreeImageAPIAssembly: 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:
Better and even faster would be snippet 3:
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);
CopyC#
// snippet 3: AdjustColors(dib, 50.0, 15.0, 1.0, false);