Redimensionner un bitmap

Contenu du snippet

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.

A voir également

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.