Bildbearbeitung ist eigentlich ganz einfach - Beim TBitmap32 greifst du über die Pixel-Eigenschaft auf die Farbe jedes einzelnen Pixels zu. Du brauchst dann nur geeignete Algorithmen:
Delphi-Quellcode:
function Gamma(bitmap: TBitmap32; factor: single): TBitmap32;
var i,k: Integer;
c: TColor;
begin
Result := TBitmap32.Create;
Result.assign(bitmap);
for i := 0
to Result.Width -1
do
for k := 0
to Result.Height -1
do
begin
c := Result.Pixel[i,k];
Result.Pixel[i,k] :=
rgb(Round(GetRValue(c) * factor), Round(GetGValue(c) * factor), Round(GetBValue(c) * factor));
end;
end;
Die tatsächliche Berechnung - und das neue Zusammenbauen der Farbe - kann man sicher noch gehörig optimieren, unter anderem durch direkten Speicherzugriff, wo man mit assembler arbeiten kann.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1