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

C++Builder Discussion :

BC++Builder : Redimensionner image


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut BC++Builder : Redimensionner image
    Bonjour a tous,

    j'aimerais savoir comment je pourrais redimensionner avec Borland C++ Builder ?

    J'ai bien beau redimensionner le width et le height de Image1 mais lorsque je fais un SaveToFile, l'image a encore les dimensions originales...

    J'attends votre coup de main !

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Les dimensions de TImage sont celles de la visualisation (sa propre fenêtre).
    Les dimensions réelles de l'image sont celles de son bitmap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Image->Picture->Bitmap->Width
    Image->Picture->Bitmap->Height
    Si on modifie ces valeurs à ce niveau là, l'image ne subit aucun stretch, donc elle est soit rognée soit augmentée de n pixels.

    Si tu veux enregistrer l'image en y appliquant un stretch, il faut créer un bitmap temporaire et utiliser TCanvas::StretchDraw.
    Le stretch s'applique du bitmap source vers le bitmap temporaire et il suffit ensuite de sauvegarder ce bitmap temporaire puis de le détruire !

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // REM : TImage *Image1
    AnsiString Filename = "bla...bla...";
    Graphics::TBitmap *Temp = new Graphics::TBitmap;
    Temp->Width = ...;
    Temp->Height = ...;
    TRect DestRect = Rect(0,0,Temp->Width, Temp->Height);
    Temp->Canvas->StretchDraw(DestRect, Image1->Picture->Bitmap);
    Temp->SaveToFile(Filename);
    delete Temp;
    A plus !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Salut,

    merci pour ta reponse rapide !

    J'ai essayé ton code avec une image jpg et l'image créée et redimensionnée est vide.. Elle n'a rien dedans.. Le fichier existe et a les bonnes dimensions, pese 1.17 mo mais il n'y a rien dedans..

    Je l'ai aussi essayer de le sauvegarder en bitmap, ca donne le meme resultat..

    Comment régler cela ?

    J'ai pourtant bien copier ton code (et analyser) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // REM : TImage *Image1
        AnsiString Filename = "C:\\test.jpg";
        Graphics::TBitmap *Temp = new Graphics::TBitmap;
        Temp->Width = 640;
        Temp->Height = 480;
        TRect DestRect = Rect(0,0,Temp->Width, Temp->Height);
        Temp->Canvas->StretchDraw(DestRect, Image1->Picture->Bitmap);
        Temp->SaveToFile(Filename);
        delete Temp;
    Merci

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        AnsiString Filename = "C:\\test.jpg";
        Graphics::TBitmap *Temp = new Graphics::TBitmap;
        Image1->Picture->LoadFromFile(Filename);
        Temp->Width = 640;
        Temp->Height = 480;
        TRect DestRect = Rect(0,0,Temp->Width, Temp->Height);
        Temp->Canvas->StretchDraw(DestRect, Image1->Picture->Bitmap);
        Temp->SaveToFile(Filename);
        delete Temp;

    Je pense ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Par défaut
    Non Image1 a bel et bien sa photo...

    Merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    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
    Image1->Visible=false;
    TJPEGImage*imagemodif =new TJPEGImage();
          OpenPictureDialog1->Execute();
          Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
          AnsiString ext;
          ext=ExtractFileExt(OpenPictureDialog1->FileName);
           if(ext==".jpg" || ext==".JPG" )
           { imagemodif->LoadFromFile(OpenPictureDialog1->FileName);
             Image1->Picture->Bitmap->Assign(imagemodif);
               }
    Graphics::TBitmap *Temp = new Graphics::TBitmap;
        Temp->Width = 640;
        Temp->Height = 480;
        TRect DestRect = Rect(0,0,Temp->Width, Temp->Height);
        Temp->Canvas->StretchDraw(DestRect, Image1->Picture->Bitmap);
        Temp->SaveToFile(OpenPictureDialog1->FileName);
     
    delete Temp;
    delete imagemodif;
    normal avec le jpg , ilfaut faire çà

    ne pas oublier
    #include <jpeg.hpp>

Discussions similaires

  1. [FLASH 8] Redimensionner image
    Par arnaud_verlaine dans le forum Flash
    Réponses: 4
    Dernier message: 14/06/2006, 11h43
  2. optimisation redimensionnement image
    Par enguerran dans le forum Graphisme
    Réponses: 12
    Dernier message: 12/05/2006, 03h54
  3. Redimensionner image avant de la charger
    Par nou366 dans le forum Delphi
    Réponses: 2
    Dernier message: 11/05/2006, 13h05
  4. Redimensionner image dans MDI
    Par DEFITOP dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/05/2006, 20h02
  5. [MFC - GDI] Redimensionnement Image
    Par Ben A. dans le forum MFC
    Réponses: 3
    Dernier message: 02/02/2006, 11h54

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