No aclaras si la fotografia es un bmp, un jpeg, si esta en un archivo o cargada en un TImage. Asi que voy a suponer que esta en un archivo bmp. Ademas no entiendo muy bien eso del marco, el codigo que te pongo a continuacion aumenta el brillo de toda la imagen, no de solo una parte.
Código Delphi
[-]
type
Triple = array[1..3]of Byte;
function Multiplicar(b: Byte; x: Integer): byte;
begin
x:= (x * b) shr 7;
if x > 255 then Result:= 255
else Result:= x;
end;
procedure Filtro(Origen, Destino: string; Brillo: Integer);
var
Bitmap: Tbitmap;
P: ^Triple;
i,j: Integer;
begin
Bitmap:= TBitmap.Create;
try
try
Bitmap.LoadFromFile(Origen);
Bitmap.PixelFormat:= pf24bit; for j:= 0 to Bitmap.Height - 1 do
begin
P:= Bitmap.ScanLine[j];
for i:= 0 to Bitmap.Width - 1 do
begin
P^[1]:= Multiplicar(P^[1],Brillo);
P^[2]:= Multiplicar(P^[2],Brillo);
P^[3]:= Multiplicar(P^[3],Brillo);
inc(P);
end;
end;
Bitmap.SaveToFile(Destino);
except
ShowMessage('No puedo realizar la tarea');
end;
finally
Bitmap.Free;
end;
end;
Para usar la funcion hay que pasarle como parametros, el archivo de origen, el de destino y el brillo. El brillo tiene la siguientes equivalencias: 0=0%, 128=100%, 256=200%, etc ...
Por ejemplo, asi aumentariamos el brillo en un 50%
Código Delphi
[-]
Filtro('d:\1.bmp','d:\2.bmp',192);
Espero que te sirva