Première étape du redimensionnement d'une image avec les bitmap.
SrcBmp représente l'image d'origine à copier.
DestBmp représente un objet TBitmap dasn lequel SrcBmp sera copié après avoir été redimensionné.
MaxSize indique la dimension maximale (largeur ou hauteur) à ne pas dépasser.
Explications sur le code :
On commence par déterminer la ration hauteur/largeur de l'image d'origine.
Ensuite, on redimensionne le bitmap de destination en limitant la plus grande dimension à MaxSize et en appliquant le ratio Ratio à l'autre dimension.
Il ne reste plus alors qu'à étirer l'image d'origine (StrechDraw) sur la surface de dessin (canvas) du bitmap destinataire en la contenant dans une surface indiquée par la propriété ClipRect.
Source / Exemple :
procedure ResizeBmpImage(SrcBmp, DestBmp: TBitmap; const MaxSize:
integer);
var
Ratio: double;
begin
{D'abord s'assurer que l'image n'est pas vide et que la dimension
maximale est positive}
if (SrcBmp.Empty) or (MaxSize <= 0) then
Exit;
{Vider l'image du TBitmap de destination}
DestBmp.FreeImage;
//Détermination du cadrage : vertical ou horizontal
Ratio := SrcBmp.Height / SrcBmp.Width;
if Ratio > 1 then
//cadrage vertical
DestBmp.Width := Round(MaxSize / Ratio)
else
//cadrage horizontal
DestBmp.Width := MaxSize;
DestBmp.Height := Round(DestBmp.Width * Ratio);
{Copie de l'image redimensionnée}
DestBmp.Canvas.StretchDraw(DestBmp.Canvas.ClipRect, SrcBmp);
end;
Conclusion :
La prochaine étape consistera à redimensionner une image jpeg.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.