Problème avec Jpeg.CompressionQuality
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 :
Code:
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; |
Ça fonctionne bien sauf que le taux de compression que j'impose n'est pas pris en compte.
Je modifie mon code en introduisant un autre objet Tpicture tel que :
Code:
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; |
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.
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