Bonsoir,
Je viens de terminer un petit outil qui m'affiche les .jpg d'un dossier sous forme de petites images provenant des thumbnails incluses dans les données Exif.
Mais les .jpg n'ayant pas toujours de thumbnail, en cas d'absence je me suis inspiré de l'exemple trouvé dans /usr/share/lazarus/1.0.10/examples/jpeg, dont le cœur est :
pour charger l'image et l'assigner à un TImage dynamiquement créé avec des dimensions précises et son Strech à True.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 try //-------------------------------------------------------------------------- // Create a TJPEGImage and load the file, then copy it to the TImage. // A TJPEGImage can only load jpeg images. JPEG:=TJPEGImage.Create; try JPEG.LoadFromFile(OpenPictureDialog1.Filename); // copy jpeg content to a TImage Image1.Picture.Assign(JPEG); finally JPEG.Free; end; //-------------------------------------------------------------------------- UpdateInfo(OpenPictureDialog1.Filename); except on E: Exception do MessageDlg('Error','Error: '+E.Message,mtError,[mbOk],0); end;
Tout ça fonctionne bien, mais ce qui est curieux c'est la lenteur d'affichage.
Procédure de test : je lance une instance de mon outil pointant sur un dossier où les images (11) sont récentes, pèsent + ou - pareil (environ 4 Mo) et ont une thumbnail disponible qui est récupérée par dEXIF.pas pour affichage dans TImage.
Puis je lance une autre instance sur un autre dossier de 11 images également (entre 1 Mo et 300 ko), où beaucoup de thumb's sont absentes et seront donc calculées comme décrit précédemment.
Ensuite je passe de l'une à l'autre par ALT-TAB et je constate que l'affichage de l'instance avec les 11 vraies vignettes est quasi instantané alors que l'autre met plus d'une grosse seconde !
Pourquoi ?
Idem au redimensionnement de la fenêtre (qui va faire bouger des panels [portant un TImage] dans une scrollbox) : ça fige c'est une horreur.
Mais aucun problème lors du déplacement de l'outil à la souris.
Un idée du pourquoi du comment ?
Pas le bon composant ? J'ai jeté un œil à l'exemple imgviewer à base de TImage lui aussi, et qui est un peu une abomination et termes de perf's sur des grosses images
Que choisir d'autre ?
Merci,
Partager