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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    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 confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 344
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 344
    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 ?>

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    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 confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 344
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 344
    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);
    ?>

  6. #6
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 7
    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.

+ 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