IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

resize d'une image sous delphi6


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut resize d'une image sous delphi6
    Bonjour
    QQn connait il un snippet, une librairie, un composant pour re dimensionner des images JPEG/PNG/GIF sous delphi6 ?

    ex:
    procedure resizePicture(source:String; w:integer; h:integer);

    merci

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Bonjour,

    dans la FAQ il y a une méthode pour les JPEG :

    Comment redimensionner une image

    A+
    Charly

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Pour les GIF et les PNG tu peux utiliser les bouts de code suivants dont :
    - les uns permettent d'en obtenir le Bmp que tu redimensionnes soit avec Bmp.Canvas.StretchDraw(...), soit avec StretchBlt utilisé avec Halftone
    - et les autres de sauver le Bmp redimensionné au format GIF ou PNG :

    Pour les GIF : ( nécessite d'utiliser l''unit GifImage Disponible ici : http://thinkerprj.googlecode.com/svn...s/GIFImage.pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function BMPdeGIF(const nomFichierGIF: string): TBitmap;
    var G: TGifImage;
    begin
      result := TBitmap.Create;
      try
        G := TGifImage.Create;
        try
          G.LoadFromFile(nomFichierGIF);
          result.Assign(G.Bitmap);
        finally G.Free; end;
      finally end;
    end;
     
    procedure SauverBMPsousGIF(const nomFichier: string; const Bmp: tBitMap);
    var G: TGifImage;
    begin
      G := TGifImage.Create;
      try G.Assign(Bmp);
        G.SaveToFile(nomFichier);
      finally G.Free;
      end;
    end;
    Pour les PNG :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Utilise les unit''s pngimage, pnglang et zlibpas; (chercher sur le net, ne me souviens plus sur quel site je les ai trouvés)
     
    function BMPdePNG(const nomFichierPNG: string): TBitmap;
    var P: TpngObject;
    begin
      Result := TBitmap.Create;
      try
        P := TPngObject.Create;
        try
          P.LoadFromFile(nomFichierPNG);
          Result.Assign(P);
        finally P.Free; end;
      finally end;
    end; // BMPdePNG
     
    procedure SauverBMPsousPNG(const nomFichierPNG: string; const Bmp: tBitMap);
    var P: TpngObject;
    begin
      P := TPngObject.Create;
      try
        try
          P.Assign(Bmp);
          P.SaveToFile(nomFichierPNG);
        finally end;
      finally P.Free; end;
    end; // SauverBMPsousPNG
    Code pour redimensionner avec StretchBlt lorsque le TImage imgResized est prédimensionné compte tenu du Scale-Factor et que le Bmp_Original est stocké dans imgOriginal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure StretchBlt_HalfTone;
    var pt: TPoint;
    begin
      with Form1 do begin
        GetBrushOrgEx(imgResized.Picture.Bitmap.Canvas.Handle, pt);
        SetStretchBltMode(imgResized.Picture.Bitmap.Canvas.Handle, HalfTone);
        SetBrushOrgEx(imgResized.Picture.Bitmap.Canvas.Handle, pt.x, pt.y, @pt);
     
        StretchBlt(imgResized.Picture.Bitmap.Canvas.Handle, 0, 0,
          imgResized.Picture.Bitmap.Width, imgResized.Picture.Bitmap.Height,
          imgOriginal.Picture.Bitmap.Canvas.Handle, 0, 0,
          imgOriginal.Picture.Bitmap.Width, imgOriginal.Picture.Bitmap.Height, SRCCOPY);
        imgResized.Invalidate;
      end;
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 23h23
  2. Commentaire d'une image sous Firefox
    Par fabrice1596 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/06/2005, 12h59
  3. comment créer une image sous forme d'eclipse(ronde)
    Par unix27 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/05/2005, 23h16
  4. Sauvegarde d'une image sous un autre format
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/02/2004, 10h50
  5. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo