FreeImageGetAdjustColorsLookupTable Method |
Namespace: FreeImageAPI
Assembly: FreeImageNET (in FreeImageNET.dll) Version: 3.17.0.4 (3.17.0)
public static int GetAdjustColorsLookupTable( byte[] lookUpTable, double brightness, double contrast, double gamma, bool invert )
Parameters
- lookUpTable
- Type: SystemByte
Output lookup table to be used with AdjustCurve(FIBITMAP, Byte, FREE_IMAGE_COLOR_CHANNEL). The size of 'lookUpTable' is assumed to be 256. - brightness
- Type: SystemDouble
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: SystemDouble
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: SystemDouble
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.
- invert
- Type: SystemBoolean
If set to true, the image will be inverted.
Return Value
Type: Int32The number of adjustments applied to the resulting lookup table compared to a blind lookup table.
Furthermore, the lookup table created 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:
// snippet 1: contrast, brightness AdjustContrast(dib, 15.0); AdjustBrightness(dib, 50.0);
// snippet 2: brightness, contrast AdjustBrightness(dib, 50.0); AdjustContrast(dib, 15.0);
Better and even faster would be snippet 3:
// snippet 3: byte[] lut = new byte[256]; GetAdjustColorsLookupTable(lut, 50.0, 15.0, 1.0, false); AdjustCurve(dib, lut, FREE_IMAGE_COLOR_CHANNEL.FICC_RGB);
This function is also used internally by AdjustColors(FIBITMAP, Double, Double, Double, Boolean), which does not return the lookup table, but uses it to call AdjustCurve(FIBITMAP, Byte, FREE_IMAGE_COLOR_CHANNEL) on the passed image.