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

Bibliothèques et frameworks PHP Discussion :

[GD] Image générée dynamiquement sous un formulaire


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [GD] Image générée dynamiquement sous un formulaire
    Bonsoir,

    Je dispose de 2 fichiers :
    index.php, et logo.php

    index.php contient mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <html>
    <style type="text/css">
    body {
    background-color: black;
    </style>
    <form method="post" action="logo.php">
    <center><p style="color:white;">
    <input type=text name="texte1" size="45" rows="1" maxlength="35"><br>
    <input type=text name="texte2" size="45" rows="1" maxlength="40">
    <input type="submit" name="send" value="Envoyer"><br></p>
    </form></center></html>
    et logo.php contient l'image :

    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
     
    <?php
    $nom_image = "test.png";
    $image = imagecreatefrompng($nom_image);
    $text01 = trim(stripslashes(strip_tags($_POST['texte1'])));
    $text02 = trim(stripslashes(strip_tags($_POST['texte2'])));
    $blanc = imagecolorallocate($image, 249, 249, 255);
    $noir = imagecolorallocate($image, 0, 0, 0);
    header ("Content-type: image/png");
    $tb = imagettfbbox(11, 0, 'Calibri.ttf', $text01);
    $tc = imagettfbbox(8, 0, 'Calibri.ttf', $text02);
    $x = imagesx($image);
    $y = ceil(($x - $tb[2]) / 2);
    $z = ceil(($x - $tc[2]) / 2);
    imagettftext($image, 11, 0, $y, 17, $noir, 'Calibri.ttf', $text01);// ombre
    imagettftext($image, 11, 0, $y, 16, $blanc, 'Calibri.ttf', $text01);
    imagettftext($image, 8, 0, $z, 34, $noir, 'Calibri.ttf', $text02);
    imagepng($image);
    imagedestroy($image);
    ?>
    Cela fonctionne bien mais le 'form action' vers logo.php nous affiche juste l'image modifiée, dans une page blanche. J'aimerai en fait que l'image modifiée apparaisse dynamiquement sous le formulaire, après validation de ce dernier. Quelles peuvent-être les solutions à ce petit problème ?
    Merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 193
    Points : 8 403
    Points
    8 403
    Billets dans le blog
    17
    Par défaut
    Il faudrait afficher l'image dans un <IMG> auquel tu passerais les différents paramètres.
    Ex. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post">...</form>
    <?php if ( formulaire soumis ) : ?>
    <img src="logo.php?texte1=<?php echo $_POST['texte1'] ?>&texte2=<?php echo $_POST['texte2"] ?>" alt="...">
    <?php endif ?>
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Salut et merci pour ta réponse !
    J'ai testé ta proposition, l'image logo.php prend bien les paramètres texte1=coucou&texte2=hello mais ne m'affichait que mon image de base sans le texte

    J'ai tenté alors avec du GET partout, et là ça fonctionne mais je n'aime pas trop que les données apparaissent en clair...

    Commen faire pour que ça passe avec POST, je ne saisis pas...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu peux mettre le traitement (logo.php) en include dans index.php :
    index.php
    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
    27
    <?php
    // traitement du formulaire
    if (isset($_POST['send']) && $_POST['send']=='Envoyer')
    {
       include('logo.php');
    }
    ?>
    <html>
    <style type="text/css">
    body {
    background-color: black;
    </style>
    <form method="post" action="index.php">
    <center>
    <p style="color:white;">
    <input type=text name="texte1" size="45" rows="1" maxlength="35"><br>
    <input type=text name="texte2" size="45" rows="1" maxlength="40">
    <input type="submit" name="send" value="Envoyer"><br>
    </p>
    </form>
    </center>
    <?php
    // affichage de l image
    echo '<img border="0" src="'.$nom_image.'" alt="">
    }
    ?>
    </html>
    Note : <form method="post" action="index.php">

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 193
    Points : 8 403
    Points
    8 403
    Billets dans le blog
    17
    Par défaut
    Testé et approuvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="post">
    <input type=text name="texte1" size="45" rows="1" maxlength="35"><br>
    <input type=text name="texte2" size="45" rows="1" maxlength="40">
    <input type="submit" name="send" value="Envoyer"><br></p>
    </form>
    <?php if ( isset($_POST['texte1'], $_POST['texte2']) ) : ?>
    <img src="logo.php?texte1=<?php echo htmlspecialchars(rawurlencode($_POST['texte1'])) ?>&texte2=<?php echo htmlspecialchars(rawurlencode($_POST['texte2'])) ?>">
    <?php endif ?>
    logo.php :

    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
    <?php
    $nom_image = "/Google.png";
    $font = '/Windows/Fonts/Arial.ttf' ;
    $image = imagecreatefrompng($nom_image);
    $text01 = trim(stripslashes(strip_tags($_GET['texte1'])));
    $text02 = trim(stripslashes(strip_tags($_GET['texte2'])));
    $blanc = imagecolorallocate($image, 249, 249, 255);
    $noir = imagecolorallocate($image, 0, 0, 0);
    $tb = imagettfbbox(11, 0, $font, $text01);
    $tc = imagettfbbox(8, 0, $font, $text02);
    $x = imagesx($image);
    $y = ceil(($x - $tb[2]) / 2);
    $z = ceil(($x - $tc[2]) / 2);
    imagettftext($image, 11, 0, $y, 17, $noir, $font, $text01);// ombre
    imagettftext($image, 11, 0, $y, 16, $blanc, $font, $text01);
    imagettftext($image, 8, 0, $z, 34, $noir, $font, $text02);
    header ("Content-type: image/png");
    imagepng($image);
    imagedestroy($image);
    ?>
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci à vous deux pour votre aide !
    Mainenant, un dernier détail à régler :

    J'aimerai que l'image modifiée soit directement stockée sur le serveur.
    J'ai donc modifié ainsi le fichier logo.php :

    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
    <?php
    $nom_image = "test.png";
    $font = "Calibri.ttf";
    $image = imagecreatefrompng($nom_image);
    $text01 = trim(htmlspecialchars(strip_tags($_GET['texte1'])));
    $text02 = trim(htmlspecialchars(strip_tags($_GET['texte2'])));
    $blanc = imagecolorallocate($image, 249, 249, 255);
    $noir = imagecolorallocate($image, 0, 0, 0);
    $md5 = md5(date("dmYHis"));
    $file = 'uploads/'.$md5.'.png';
    $tb = imagettfbbox(11, 0, $font, $text01);
    $tc = imagettfbbox(8, 0, $font, $text02);
    $x = imagesx($image);
    $y = ceil(($x - $tb[2]) / 2);
    $z = ceil(($x - $tc[2]) / 2);
    imagettftext($image, 11, 0, $y, 17, $noir, $font, $text01);// ombre
    imagettftext($image, 11, 0, $y, 16, $blanc, $font, $text01);
    imagettftext($image, 8, 0, $z, 34, $noir, $font, $text02);
    header ("Content-type: image/png");
    imagepng($image, $file);
    readfile($file);
    imagedestroy($image);
    ?>
    Une fois le traitement du formulaire effectué, l'image s'affiche et est bien copiée sur le serveur dans le dossier indiqué.
    Cependant, j'aimerai que mon image modifiée m'indique directement ce chemin http://monsite.com/uploads/imagemodifieeparlogophp.png et non pas http://monsite.com/logo.php?texte1=t...xte2=soustitre
    Comment pourrais-je m'y prendre ?
    Merci encore pour votre aide.

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 193
    Points : 8 403
    Points
    8 403
    Billets dans le blog
    17
    Par défaut
    Dans ce cas logo.php n'a plus d'intérêt tel quel.
    Tu devras faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
        if ( formulaire soumis ) {
            Génération de l'image
            Création du fichier
            Redirection vers le fichier généré :
            header('Location: ' . $file_image) ;
            exit( ) ;
        }
    ?><html>...Formulaire de saisie
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci, le script fonctionne parfaitement désormais

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

Discussions similaires

  1. Affichage d'une image génèrée dynamiquement
    Par chichone dans le forum GWT et Vaadin
    Réponses: 6
    Dernier message: 20/06/2008, 13h51
  2. Pb d'affichage d'image dynamique sous Flash
    Par raldine dans le forum Flash
    Réponses: 4
    Dernier message: 12/02/2007, 11h19
  3. Affichage des images générées par une application sous tomcat
    Par don'de dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 09/01/2007, 11h24
  4. Problème de chargement d'image dynamique sous firefox
    Par Tmex dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 08/03/2006, 10h24
  5. Formulaire dynamique sous IE
    Par Melekitto dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/02/2006, 12h12

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