Danke! Ich hatte überhaupt nicht damit gerechnet, dass es an der Umwandlung liegt :O
Der Geschwindigkeitsunterschied ist gigantisch
Leider sind die Threads jetzt absolut überflüssig ^^
Habe den Code jetzt angespasst, aber bei der Rückumwandlung vom Colorarray zum Bitmap gibts jedoch noch einen kleinen Fehler, da das Bild einen gelbstich hat:
Delphi-Quellcode:
procedure TColor2RGB(Color: TColor; VAR R, G, B: Byte);
begin
if Color SHR 24 = $FF then Color:=GetSysColor(Color AND $FF)
else if Color SHR 24 > $02 then Color := 0;
R := Color;
G := (Color shr 8);
B := (Color shr 16);
end;
function ArrayofColorToBitmap(AoC: ColorArray):TBitmap;
type
PixArray = Array [1..3] of Byte;
VAR i,j:integer; p: ^PixArray; R,G,B: Byte;
begin
result:=TBitmap.Create;
result.PixelFormat := pf24Bit;
result.Width:=Length(AoC);
result.Height:=Length(AoC[0]);
for i := 0 to Length(AoC[0])-1 do
begin
p:= result.ScanLine[i];
for j := 0 to Length(AoC)-1 do
begin
TColor2RGB(Aoc[j,i], R, G, B);
p^[1]:=B; //<-------- die Kanäle sind schon vertauscht
p^[2]:=G;
p^[3]:=R;
Inc(p);
end;
end;
end;
Woran liegt das?