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] Génération d'image


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Par défaut [GD] Génération d'image
    Bonjour tout le monde!

    J'ai regardé à plusieurs reprises pour générer des images (grace à la bibliothèque GD), et je dois bien avouer, que malgré tous les codes testés, je n'arrive jamais à rien... ^^

    Pour expliquer un peu plus le problème, commencons par la config...

    EasyPHP 2.0
    PHP 5.3

    Autre chose?

    Le problème:

    En fait, je n'ai aucun message d'erreur, mais c'est comme s'il ne trouvait aucune image à afficher (donc un petit carré marqué "image" à l'intérieur), et ceci meme avec des scripts que j'ai pu me trouver sur le web...

    Par conséquent, j'ignore dans quelle direction chercher (la bibliothèque est bien activée... ^^), et vous demande donc des idées...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Peux-tu nous donner ton script qui ne fonctionne pas ?

    Un exemple de problème courant qui donnerait ça : ton script produit un erreur PHP qui se glisse donc dans les informations de l'image proprement dite.
    Appelle directement ton script image pour voir ce que tu obtiens.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Par défaut
    si y a juste ca pour aider... ^^ Mais il est relativement long, et se repose sur 3 pages... ^^

    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
     
    image.php:
    <?PHP
    include("test-GD.php");
     
    $img = new image();
     
    $img->tailler($_REQUEST["l"],$_REQUEST["h"]);
    $img->definirDonnee(explode(" ",$_REQUEST["y"]));
    $img->definirAbscisse(explode(" ",$_REQUEST["x"]));
    $img->definirLegende($_REQUEST["legende"]);
     
    $img->dessiner($_REQUEST["type"]);
     
    echo $_REQUEST["l"]."\n".$_REQUEST["h"]."\n".$_REQUEST["legende"]."\n".$_REQUEST["y"]."\n"
    ?>
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    test-GD.php:
    <?PHP
    class image
    {
    	protected $image;
    	private $largeur, $hauteur;
    	private $color = array();
    	private $bgcolor;
    	private $t_y;
    	private $t_x;
    	private $legende;
     
    	public function image()
    	{
    		$this->largeur = 200;
    		$this->hauteur = 200;
    		$this->image = imagecreate($this->largeur,$this->hauteur);
     
    		$this->color = $this->attrib_color();
    	}
     
    	public function tailler($width,$height)
    	{
    		$this->largeur = $width;
    		$this->hauteur = $height;
    		$this->image = imagecreate($this->largeur,$this->hauteur);
     
    		$this->color = $this->attrib_color();
    	}
     
    	private function attrib_color()
    	{
    		$this->color[] = imagecolorallocate($this->image,0,192,192);
    		$this->color[] = imagecolorallocate($this->image,192,50,0);
    		$this->color[] = imagecolorallocate($this->image,192,192,0);
    		$this->color[] = imagecolorallocate($this->image,0,192,0);
    		$this->color[] = imagecolorallocate($this->image,0,0,192);
    		$this->color[] = imagecolorallocate($this->image,0,192,50);
    		$this->color[] = imagecolorallocate($this->image,192,0,192);
    		$this->color[] = imagecolorallocate($this->image,100,50,200);
    		$this->color[] = imagecolorallocate($this->image,250,50,50);
     
    		$this->bgcolor = imagecolorallocate($this->image,255,255,255);
    		imagefill($this->image,1,1,$this->bgcolor);
    	}
     
    	public function definirDonnee($vals)
    	{
    		$this->t_y = $vals;
    	}
     
    	public function definirAbscisse($abs)
    	{
    		$this->t_x = $abs;
    	}
     
    	public function definirLegende($leg)
    	{
    		$this->legende = $leg;
    	}
     
    	public function dessiner($type)
    	{
    		switch($type)
    		{
    			case 0:
    				$this->courbe();
    				break;
    			case 1:
    				$this->histo();
    				break;
    			case 2:
    				$this->secto();
    				break;
    			default:
    				$this->histo();
    				break;
    		}
     
    		header("Content-Type: image/jpeg");
    		imagejpeg($this->image);
     
    		imagedestroy($this->image);
    	}
     
    	private function histo()
    	{
    		$ox = $this->largeur*0.05;
    		$oy = $this->hauteur*0.05;
     
    		$ni = count($this->t_y);
     
    		$px = ($this->largeur-2*$ox)/$ni;
    		$py = ($this->hauteur-2*$oy)/max($this->t_y);
     
    		$l = $this->largeur/(3*$ni);
    		$L = ($this->largeur-$ni*$l)/$ni;
     
    		imageline($this->image,$ox,$this->hauteur-$oy,$this->largeur,$this->hauteur-$oy,$this->color[2]);
    		imageline($this->image,$ox,$this->hauteur-$oy,$ox,$this->hauteur-$this->hauteur,$this->color[2]);
     
    		$m = max($this->t_y);
    		$p = ceil($m*0.1);
     
    		for($i=0;$i<=$m*1.1;$i+=$p)
    		{
    			imageline($this->image,$ox,$this->hauteur-$i*$py,$ox*3,$this->hauteur-$i*$py,$this->color[4]);
    			imagestring($this->image,1,$ox-15,$this->hauteur-$i*$py,$i,$this->color[5]);
    		}
     
    		for($i=0;$i<count($this->t_x);$i++)
    		{
    			$x1 = $ox+($i*($L+$l));
    			$y1 = $this->hauteur-($this->t_y[$i]*$py+$oy);
     
    			imagefilledrectangle($this->image,$x1,$y1,$x1+$l,$this->hauteur-($oy),$this->color[$i%10]);
    			imagestring($this->image,1,$x1,$this->hauteur-($oy),$this->t_x[$i],$this->coulour[3]);
    		}
     
    		imagestring($this->image,3,$this->largeur/2,10,$this->legende,$this->color[3]);
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    l'appel:
     
    <img src="image.php?y=10+12+15+7+29+30&x=janv+fev+mars+avril+mai+juin&l=450&h=450&type=1&legende=ventes" />
    si jamais, j'ai repris le script depuis un bouquin, en y changeant presque rien... (par contre, y aura peut-être encore des choses à modifier, perso, je le trouve pas trop bien fait comme livre donc voilà... ^^)

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Appelle directement ton script image pour voir ce que tu obtiens.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Par défaut
    pour autant que je lui passe tous les paramètres en url, il me sort toujours un cadre vide marqué "image"...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Enlève header("Content-Type: image/jpeg");
    et appelle directement le script avec les paramètres.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Par défaut
    Yahoo!!! T'es the best! ^^

    Vive les détails en tout cas! ^^

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,
    Citation Envoyé par 47-47 Voir le message
    Yahoo!!! T'es the best! ^^

    Vive les détails en tout cas! ^^
    echo $_REQUEST["l"]."\n".$_REQUEST["h"]."\n".$_REQUEST["legende"]."\n".$_REQUEST["y"]."\n"
    Je ne sais pas quels détails tu as pu trouver mais on ne doit pas mettre echo ou de texte brute dans un script qui génère un flux ou fichier image.

    A+.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Par défaut
    ca, c'était un test, mais quoi qu'il en soit, il sort rien... ^^ Et j'avais oublié de l'enlever pour le mettre sur le forum...

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

Discussions similaires

  1. génération d'image (gif par ex) ou redimensionnement
    Par Satanas_et_diabolo dans le forum Multimédia
    Réponses: 1
    Dernier message: 08/05/2006, 18h24
  2. Génération d'image de sécurité (captcha) et système alternatif
    Par eric41 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 02/05/2006, 12h24
  3. Carte dynamique : génération d'image ou service Web ?
    Par missnouvelle dans le forum Bibliothèques et frameworks
    Réponses: 18
    Dernier message: 17/02/2006, 14h39
  4. [Images] Génération d'image PNG dynamique
    Par Jehuty dans le forum Bibliothèques et frameworks
    Réponses: 46
    Dernier message: 01/02/2006, 14h58

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