Images GD

Petit nouveau ! | 5 Messages

11 sept. 2005, 10:48

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.

Eléphant du PHP | 71 Messages

11 sept. 2005, 11:02

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 ?) ?

Petit nouveau ! | 5 Messages

11 sept. 2005, 11:11

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);

Petit nouveau ! | 5 Messages

12 sept. 2005, 21:05

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.

@=

jlm1
Invité n'ayant pas de compte PHPfrance

20 sept. 2005, 22:58

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