freeimage.h

FreeImage_AdjustColors

8 24 32

DLL_API BOOL DLL_CALLCONV FreeImage_AdjustColors(FIBITMAP *dib, double brightness,
double contrast, double gamma, BOOL invert FI_DEFAULT(FALSE));

Esta función ajuste el brillo, contraste y gamma de una imagen y opcionalmente la invierte en una única operación. Si más de una de estas propiedades de visualización necesita se ajustada, usar esta función es preferible a llamar a cada función de ajuste separadamente. Esto es particularmente cierto para imágenes grandes o si el rendimiento es un problema. Esta función se base en FreeImage_GetAdjustColorsLookupTable, que crea una tabla de búsqueda que combina todas las operaciones de ajuste requeridas. Además, la tabla de búsqueda creada por FreeImage_GetAdjustColorsLookupTable no depende del orden en que cada operación de ajuste se realice. Debido a problemas de redondeo y de conversión abyte, en realidad es importante el orden que que cada operación de ajuste se lleve a cabo. Los siguientes fragmentos de código probablemente produzcan diferentes resultados:

// snippet 1: contrast, brightness
FreeImage_AdjustContrast(dib, 15.0);
FreeImage_AdjustBrightness(dib, 50.0);
// snippet 2: brightness, contrast
FreeImage_AdjustBrightness(dib, 50.0);
FreeImage_AdjustContrast(dib, 15.0);

Mejor y más rápido será este otro código:

// snippet 3:
BYTE LUT[256];
FreeImage_GetAdjustColorsLookupTable(LUT, 50.0, 15.0, 1.0, FALSE);
FreeImage_AdjustCurve(dib, LUT, FICC_RGB);

Descripción de los parámetros:

  • dib imagen de entrada y salida a procesar.
  • brightness Valor del porcentaje de brillo en el rango [-100..100]. Un valor cero significa que no hay cambio de brillo, menos de cero hace la imagen más oscura y mayor que cero más brillante.
  • contrast Valor de porcentaje de contraste en el rango [-100..100]. Un valor cero significa que no hay cambio de contraste, menos que cero disminuye el contraste de la iamgen y más de cero lo aumenta.
  • gamma Valor a usar para la corrección de Gamma. Un valor de 1.0 deja la imagen sin modificar, menos de uno la hace más oscura y más de uno la hace más brillante. Este parámetro debe ser mayor que cero. En caso contraio será ignorado y no se realizará corrección gamma usandp la tabla de búsqueda creada.
  • invert Si es TRUE, la imagen será invertida.

La función retorna TRUE si tiene éxito, FALSE en caso contrario (por ejemplo si la profundidad de bits del dib de entrada no puede ser manejada).