La Web del Programador: Comunidad de Programadores
 
    Pregunta:  43418 - AUMENTAR EL BRILLO DE UN BMP
Autor:  Martin Garcia Lopez
Saludos, tengo que aumentar y disminuir el brillo de un bmp mediante una funcion implementada por mi mismo y no tengo muy claro como he de hacerlo.

En teoria creo que he de actuar sobre la paleta, y de hecho multiplicando cada una de las componentes RGB (rojo, verde y azul) de la paleta por un numero entre 0 y 1 consigo disminuir el brillo de la imagen (mult. por 0.5 la dejaria al 50% de brillo). Pero cuando las multiplico por 1.5 por ejemplo para aumentar el brillo los colores que me aparecen en la imagen son completamente disparatados.

Pues eso, que no lo tengo nada claro. Quizas deberia actuar sobre el BitMap aunque no lo creo.

  Respuesta:  Roberto López
Hola,

un bmp es un simple mapa de bits en el cual para cada pixel está almacenado su color en forma de 3 octetos( RGB). Supongo que para realizar el aumento de brillo leeras cada componente de color , las convertiras a un formato numérico (short, int,etc) y posteriormente realizaras la multipicacion por el factor deseado. La representacion de cada color debe de estar comprendido en un rango de 0 a 255 , por lo tanto al multiplicar dicho valor por un factor menor que 1 no habrá problema. Sin embargo al multiplicar por un valor mayor de 1 puede haber alguna de las 3 componentes que sature, es decir que supere el valor 255, y posteriormente al realizar la conversion a byte obtengas alguna componente absurda.

Para solucionarlo te recomiendo que compruebes los valores de cada componente posteriormente a la multiplicacion, y los que sean mayor de 255 dejar su valor a 255.