Page 1 sur 1

Images GD

Posté : 11 sept. 2005, 10:48
par flanders
Bonjour,

je viens vers vous car j'ai un petit pb avec les images GD.
Je souhaite créer des images dont je puisse modifier les couleurs, grâce à des informations stockées dans une table SQL.

voici le script:
<?php

header("Content-type: image/png");



include ("../Includes/include.php");




mysql_connect($hote,$login,$pass) or die("Impossible de se connecter à la base de données");
mysql_select_db("$bd") or die("Impossible de se connecter à la base de données");

$query= "SELECT * FROM $table12";
$resultat= mysql_query ($query);
$ligne=mysql_fetch_array($resultat);


$menu_fond1_rouge = $ligne['menu_fond1_rouge'];
$menu_fond1_vert = $ligne['menu_fond1_vert'];
$menu_fond1_bleu = $ligne['menu_fond1_bleu'];

$menu_fond2_rouge = $ligne['menu_fond2_rouge'];
$menu_fond2_vert = $ligne['menu_fond2_vert'];
$menu_fond2_bleu = $ligne['menu_fond2_bleu'];

$menu_bord_rouge = $ligne['menu_bord_rouge'];
$menu_bord_vert = $ligne['menu_bord_vert'];
$menu_bord_bleu = $ligne['menu_bord_bleu'];



// Création d'une image 200*200

$img = imagecreate(200, 200);

$couleur_fond = ImageColorAllocate ($img, $menu_fond1_rouge, $menu_fond1_vert, $menu_fond1_bleu);



// Allocation de couleurs

$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);


// fond intérieur

imagefilledrectangle($img, 0, 30, 199,170, $white);
imagefilledrectangle($img, 30, 0, 170,30, $white);
imagefilledrectangle($img, 30, 170, 170,200, $white);


// coin haut gauche

imagefilledarc($img, 30, 30, 60, 60, 180, 270, $white, IMG_ARC_PIE );
imagearc($img, 30, 30, 60, 60, 180, 270, $black);
imageline ($img, 30, 0, 170, 0, $black);


// coin haut droit

imagefilledarc($img, 170, 30, 60, 60, 270, 360, $white,IMG_ARC_PIE);
imagearc($img, 170, 30, 60, 60, 270, 360, $black);
imageline ($img, 199, 30, 199, 170, $black);


// coin bas droit

imagefilledarc($img, 170, 170,60, 60, 0, 90, $white,IMG_ARC_PIE);
imagearc($img, 170, 170,60, 60, 0, 90, $black);
imageline ($img, 170, 199, 30, 199, $black);


// coin bas gauche

imagefilledarc($img, 30, 170, 60, 60, 90, 180, $white,IMG_ARC_PIE);
imagearc($img, 30, 170, 60, 60, 90, 180, $black);
imageline ($img, 0, 170, 0, 30, $black);

// Affichage au navigateur

imagepng($img);
   
// Libération de la mémoire

imagedestroy($img);



?>
J'ai le contour mais rien d'autre ne s'affiche. Si j'exclu la portion de script ou je cherche les infos de la table, et que dans je fait:
$couleur_fond = ImageColorAllocate ($img, 255, 0, 0);
Là mon image apparait.

Les couleurs sont stockées dans la table au format RVB, si je fais un echo des couleurs, j'ai la valeur qui s'affiche correctement.


Si vous avez une idée...

Merci.

Posté : 11 sept. 2005, 11:02
par progfou
La couleur s'affiche correctement, c'est à dire ?
Tu fais un :
$menu_fond1_rouge = $ligne['menu_fond1_rouge'];
puis un echo $menu_fond1_rouge; et tu as bien la valeur numérique (c'est un int ?) ?

Posté : 11 sept. 2005, 11:11
par flanders
Tu fais un :
$menu_fond1_rouge = $ligne['menu_fond1_rouge'];
puis un echo $menu_fond1_rouge;
C'est exactement cela.
et tu as bien la valeur numérique (c'est un int ?)
J'ai vérifié cela et oui, la chaîne est initialisée en INT.

J'ai mis la structure de la table et l'enregistrement:

Code : Tout sélectionner

CREATE TABLE `menu_vga` ( `menu_fond1_rouge` int(3) NOT NULL default '0', `menu_fond1_vert` int(3) NOT NULL default '0', `menu_fond1_bleu` int(3) NOT NULL default '0', `menu_fond2_rouge` int(3) NOT NULL default '0', `menu_fond2_vert` int(3) NOT NULL default '0', `menu_fond2_bleu` int(3) NOT NULL default '0', `menu_bord_rouge` int(3) NOT NULL default '0', `menu_bord_vert` int(3) NOT NULL default '0', `menu_bord_bleu` int(3) NOT NULL default '0', PRIMARY KEY (`menu_fond1_rouge`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Contenu de la table `menu_vga` -- INSERT INTO `menu_vga` VALUES (255, 0, 0, 255, 204, 102, 255, 255, 153);

Posté : 12 sept. 2005, 21:05
par flanders
Bonsoir,

J'ai trouvé la solution.
En fait, je ne peux pas utiliser directement la base mysql dans le fichier qui va générer l'image. Il faut que je transfert les infos par une URL.

Je dois insérer une image
echo "<img src='arc.php?menu_fond1_rouge=$menu_fond1_rouge&menu_fond1_vert=$menu_fond1_vert&menu_fond1_bleu=$menu_fond1_bleu'>";
puis utiliser $_GET['string'] dans le fichier qui me sert d'image.

Donc voilà c résolu.

@=

image gd

Posté : 20 sept. 2005, 22:58
par jlm1
Bonjour,
Je bouquine le forum à la recherche d'info.
Pour moi, il est possible d'insérer des requètes SQL dans un script PHP servant à générer une image et cela fonctionne trsè bien.
Il est tard, et je n'ai pas tout bien lu. Mais essais
$couleur_fond = ImageColorAllocate ($img, $menu_fond1_rouge, $menu_fond1_vert, $menu_fond1_bleu);
par
$couleur_fond = ImageColorAllocate ($img, $ligne['menu_fond1_rouge'], $ligne['menu_fond1_vert'], $ligne['menu_fond1_bleu']);
...
J'ai pas essayé à voir.

PS: je sais "résolu", mais la méthode me choque!
A+
JLM