Bonjour à toutes et à tous,
Dans un programme, je charge un millier d'images Jpg. Sur ce millier, j'en réenregistre 900 telles quelles. Les cent autres sont modifiées en taille avant d'être réenregistrées.
Pour ces 900, j'écris ce qui suit :
Ça fonctionne bien sauf que le taux de compression que j'impose n'est pas pris en compte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for i:= 0 to 899 do begin Pict:= Tpicture.Create; Pict.LoadFromFile(FchE[i]); ... // D'autres tâches liées à ces fichiers Pict.Jpeg.Compression.Quality:= 50; Pict.SaveToFile(FchS[i]); Pict.Free; end;
Je modifie mon code en introduisant un autre objet Tpicture tel que :
Cette fois-ci, mon taux de compression est bien pris en compte, mais, à cause de la recopie, cela prend beaucoup plus de temps que la première solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for i:= 0 to 899 do begin Pict:= TPicture.Create; Pict.LoadFromFile(FchE[i]); ... // D'autres tâches liées à ces fichiers PictDst:= TPicture.Create; PictDst.Bitmap.Assign(Pict.Bitmap); // Recopie de Pict dans PictDst PictDst.Jpeg.Compression.Quality:= 50; PictDst.SaveToFile(FchS[i]); Pict.Free; PictDst.Free; end;
Existe-t-il une astuce pour faire en sorte qu'avec un seul TPicture, le taux de compression soit pris en compte ?
Merci pour vos renseignements.
Cordialement.
Pierre
Partager