Zitat:
Ich mache nichts anderes nur wo ich die Berechnung ausführe ist gehüpft wie gesprungen..
Gehüpft ist aber ab und zu schneller als (in eine Funktion) gesprungen, v.a. weil du oft Millionen von Berechnungen für ein Bild durchführen musst.
Du (AW) rufst deine Rgb2Alpha in jedem Fall auf und rechnest dann im Fall
RGB>0 weiter.
Ich (MG) rufe deine Funktion nur im Fall (p[3]=)A=0 auf und rechne im Fall
RGB>0 weiter.
Delphi-Quellcode:
RGB A AW MG
0 0 f f
>0 0 R R
0 >0 f -
>0 >0 R -
Wenn das Quell-Bild also bereits Alphawerte enthält, gewinne ich viel Zeit.
Da du nur an 0 oder nicht 0 interessiert bist, könntest du alpha so oder ähnlich beschleunigen:
Delphi-Quellcode:
function alpha( r, g, b : integer ) : integer;
begin
result := 0;
if (r>=2) or (g>=1) or (b>=5) then result := 255
else
if (299*r + 587*g + 114*b >= 500) then result := 255;
end;
Oder deine Funktion etwas beschleunigen, indem du beim Aufruf nicht zuerst die drei Bytes R,G,B zusammenfasst, um sie dann in der Funktion wieder auseinander zu rechnen.
Ich bin hier wieder weg... Viel Spass bei deinen coolen Projekten.