begin process at 2010 02 10 07:53:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > REDIMENSIONNER UN BITMAP

REDIMENSIONNER UN BITMAP


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Initié Date de création :11/02/2004 Vu :4 186

Auteur : Delphiprog

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

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

  • 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;
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.


 Sources du même auteur

Source avec Zip TABLE DE CORRESPONDANCE TYPES DE DONNÉES API/PASCAL OBJET
Source avec Zip Source avec une capture GÉNÉRER DES PDF AVEC DELPHI ET PDF CREATOR
Source avec Zip Source avec une capture DESIGN PATTERN OBSERVER : IMPLÉMENTATION RÉUTILISABLE
Source avec Zip DESIGN PATTERN STRATÉGIE APPLIQUÉ AU CODE "JOURNAL DE DÉBUGG...
Source avec Zip Source avec une capture DESSINER UN RECTANGLE DE SÉLECTION AU DESSUS D'AUTRES COMPOS...

 Sources de la même categorie

Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette
Source avec Zip Source avec une capture ÉCRAN DE VEILLE FEU D'ARTIFICE par barbichette

Commentaires et avis

Commentaire de 29031980 le 04/05/2009 10:45:55

Mais comment utiliser cette procédure?

Commentaire de Delphiprog le 05/05/2009 22:12:05 administrateur CS

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 ?

Commentaire de darkcodersc le 24/09/2009 17:34:39

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

c'ete drole ! digne n'un comic...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales