Derzeit verwende ich folgende Methode, um ein 32-bit-Bitmap auf Vorhandensein eines (Teil-) Transparenten Pixels zu prüfen:
Delphi-Quellcode:
function HasTransparentRGBAValues (const bm:TBitmap): Boolean;
var
x, z: Integer; RGBA: pRGBALine;
begin
Result := FALSE;
RGBA := bm.Scanline[bm.Height-1];
z := bm.Width * bm.Height;
for x := 0 to z-1 do begin
if RGBA^[x].rgbReserved <> 255 then begin
EXIT (TRUE);
end;
end;
end;
Bei einem Nicht transparentem Bild in den Ausmaßen 4244x2819 Pixel benötigt die Routine hier auf meinem Rechner ca. 80 MS um das ganze Bitmap zu prüfen, was ziemlich viel Zeit ist.
Kennt jemand da evtl. eine noch schnellere Methode als die oben dargestellte?