Redimensionner un bitmap

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 932 fois - Téléchargée 31 fois

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

Ajouter un commentaire

Commentaires

cs_darkcodersc
Messages postés
7
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
20 novembre 2009

[quote]Difficile de faire plus simple, non ?[quote]

c'ete drole ! digne n'un comic...
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
26
procedure TForm2.Button1Click(Sender: TObject);
var
bmp1: TBitmap;
begin
bmp1 := TBitmap.Create;
try
bmp1.LoadFromFile('butterfly.bmp');
//une copie de bmp1 redimensionnée sera mise
// dans l'image sur la fiche
ResizeBmpImage(bmp1, image1.Picture.Bitmap, image1.Height);
finally
bmp1.Free;
end;
end;

Difficile de faire plus simple, non ?
29031980
Messages postés
2
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
4 mai 2009

Mais comment utiliser cette procédure?

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.