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

Lazarus Pascal Discussion :

[BGRABitmap] Étirer une image [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    mars 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 175
    Points : 163
    Points
    163
    Par défaut [BGRABitmap] Étirer une image
    Mon problème va paraître basique à beaucoup d'entre-vous mais, après plus d'une journée passée à faire des tests et à lire les tutoriels de G. Vasseur et à chercher des pistes sur les forums, je me résoud à solliciter l'aide de la communauté.
    Je cherche à ajuster une image (par un facteur de zoom) à l'espace disponible sur mon écran soit 954 pixels en hauteur et 1350 pixels en largueur ( homothétique du format A4 paysage). J'ai chargé mon image dans un BGRAImageManipulation dont le nom est BGRA_GC_IMgZ et il me reste à lui appliquer un effet de zoom, à priori en utilisant StretchPutImage ou StretchPutIMageProportionaly mais je n'arrive pas à obtenir le résultat escompté à savoir une image entièrement inscrite dans un cadre de dimension 1350 pixels* 954 pixels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     BGRA_GC_ImgZ.Top  := 5 ;  // le container image position et taille
        BGRA_GC_ImgZ.Left := 5 ;
        BGRA_GC_ImgZ.Height := TaillImgOrigH ;
        BGRA_GC_ImgZ.Width  := TaillImgOrigW ;
        BGRA_GC_ImgZ.Bitmap.loadFromFile(NomImg2);  // L'image est chargée dans le Container BGRA_GC_ImgZ
     
        Img_orig := TBGRABitmap.create(TaillImgOrigW, TaillImgOrigH, 255) ; // l'image d'origine à la taille non ajustée
        Img_Ajust := TBGRABitmap.create(Nll_larg, Nll_Haut,255) ;   // l'image dont la taille est ajustée à celle disponible
        Img_Ajust.StretchPutImage(Img_Ajust.ClipRect,Img_orig, dmDRawwithTRansparency  );
        BGRA_GC_ImgZ.redrawBitmap ;
    Je souhaite ensuite sauvegarder l'image dont la taille a été ajustée pour d'autres traitements.
    Je vous remercie par avance pour vos explications.

    R.O.

  2. #2
    Membre expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 345
    Points : 3 339
    Points
    3 339
    Billets dans le blog
    2
    Par défaut
    Salut pour moi une grosse erreurs au premier coup d'oeil. Ton image d'origine "Img_orig" est vide car tu ne charges pas ton fichier dedans, c'est peut-être pour ça
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    mars 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 175
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Salut pour moi une grosse erreurs au premier coup d'oeil. Ton image d'origine "Img_orig" est vide car tu ne charges pas ton fichier dedans, c'est peut-être pour ça
    A+

    Bonjour et merci pour la réponse rapide,
    Je voyais bien que mon image Img_Orig était vide mais cela vient du fait que je ne saisi pas bien la relation qu'il y a entre le BGRAGraphicscontrol qui me permet d'afficher la même image (NomImg2 - soit une image jpg avec son nom et son chemin complet ) par la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BGRA_GC_ImgZ.Bitmap.loadFromFile(NomImg2);  // L'image est chargée dans le Container BGRA_GC_ImgZ
    et l'image BGRA qui serait chargée par le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Img_orig := TBGRABitmap.create(NOmImg2) ; // l'image d'origine à la taille non ajustée
    sur laquelle il faut appliquer la transformation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Img_Ajust.StretchPutImage(Img_Ajust.ClipRect,Img_orig, dmDRawwithTRansparency  );
    qui permet l'affichage de l'image à la dimension souhaitée. Cette dernière image ajustée étant celle que je souhaite sauvegarder pour une utilisation future.

    J'ajoute que, pour écrire mon code, je me suis inspiré de l'une des rares discussions en français sur le sujet :celle initiée par le 26/11/18 par Jihelpi à laquelle vous aviez participé mais, de toute évidence je n'ai pas tout compris. en particulier lle rôle du BGRAContolGraphic et les arguments du SttrechPutImage .

    Cordialement

    R.O.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    3 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 619
    Points : 12 755
    Points
    12 755
    Billets dans le blog
    8
    Par défaut
    Bonjour !

    S'il s'agit seulement d'étirer une image, vous n'avez pas besoin des composants BGRAControls. Vous pouvez le faire très simplement avec la méthode Resample de la classe TBGRABitmap (exemple).

    Ou alors avez-vous une autre raison de vouloir utiliser le composant BGRAImageManipulation ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    mars 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 175
    Points : 163
    Points
    163
    Par défaut BGRAGRaphicControl, ajuster une image à la taile écran et la sauvegarder
    Bonsoir,

    Non je n'ai pas besoin de faire d'autres transformations que l'ajustement de l'image à la taille d'écran disponible. Dire que la solution était aussi simple (simplement se rendre compte que Zoomer pouvait être synonyme d'Etirer !!

    Merci R. Chastain.

    Cordialement

    R.O.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    mars 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 175
    Points : 163
    Points
    163
    Par défaut BGRA - Etirer une image
    A nouveau Bonsoir,

    La suggestion de Roland Chastain m'a permis de résoudre mon problème et Merci encore une fois. Il n'empêche que quelques démos facilement accessibles seraient les bienvenues pour comprendre ce qui se cache exactement derrière les paramètres affichés par les diverses procédures des TBGRAControlGraphic et TPaintBox par exemple pourquoi des Trectangles, dans certains cas des Graphic et d'autres des Bitmap, etc...
    Enfin, pour moi encore Merci.

    R.O.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une image en plein écran
    Par crazy_inf dans le forum Qt
    Réponses: 3
    Dernier message: 06/07/2008, 10h24
  2. Ajuster une image à une page
    Par ozyamdias dans le forum VBA Word
    Réponses: 1
    Dernier message: 03/07/2008, 18h33
  3. comparer une image et l'écran
    Par duaner dans le forum 2D
    Réponses: 1
    Dernier message: 11/06/2007, 07h13
  4. [Labview 8.2] Comment mettre une image en plein écran ?
    Par Jérôme5 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 07/05/2007, 10h35
  5. Afficher une image sur un écran 3D.
    Par pan99 dans le forum 3D
    Réponses: 1
    Dernier message: 16/04/2007, 14h48

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