Lenteur du chargement d'un TBitmap
Bonjour,
Je suis entrain de convertir une application Delphi vers Lazarus dans lequel j'ai une fonction qui charge une Image bitmap dans une TImage. Avec Delphi ca marche parfaitement mais avec Lazarus ça fonctionne mais il met 700 ms (presque une seconde). pour charger une image d'une MemoryStream vers une TImage.
Selon mes tests cette fonction met trop de temp ==> FBitmap.LoadFromStream(M); ( voir le code ci dessous pour le test) .
J'ai poussé mes recherches et j'ai ajouté le composant VampyreImaging et j'ai utilisé FBitmap:= TImagingBitmap.Create; a la place de TBitmap et j'ai obtenu 60ms de temp pour chargement ! Je cherche un moyen d'utiliser le composant standard de Lazarus sans devoir utiliser une bibliothèque externe vu que je vise une application multiplatforme. Y a-t-il un moyen ? Merci d'avance.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
var FBitmap:Tbitmap;
i:integer;
M:TmemoryStream;
D1,D2:TDateTime;
begin
M:=TmemoryStream.create;
Image1.Picture.Bitmap.LoadFromFile('C:\Users\anonymous\Pictures\1.bmp');
Image1.Picture.SaveToStream(M);
M.Position:=0;
FBitmap:= Tbitmap.Create;
try
D1:=Now;
FBitmap.LoadFromStream(M);
Image1.Picture.Assign(FBitmap);
D2:=Now;
finally
FBitmap.free;
M.free;
memo1.Lines.Add( MilliSecondsBetween(D1,D2).ToString );
end; |