Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/07/2011, 13h42   #1
Invité régulier
 
Homme Loic
Étudiant
Inscription : décembre 2010
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Loic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 26
Points : 8
Points : 8
Par défaut Problème avec des fonctions qui créent des éléments dans une image.

Bonjour!

Alors mon petit grand problème porte en effet sur des fonctions qui modifient mon image. En effet, quand j'exécute le code ci-dessous, il me sort plein de message d'erreur pour ImageFilledrectangle et imagestring:

Code :
1
2
3
Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in /xxxxx/test2.php on line 176
 
Warning: imagestring(): supplied argument is not a valid Image resource in /xxxx/test2.php on line 181

Je pense que ça arrive car je suis en train d'utiliser une fonction pour dessiner l'imagestring et l'imagefilledrectangle et que du coup, il aime pas le passage en paramètre de $image. J'ai essayé de le mettre en entrée dans la fonction et de le sortir en return mais rien à faire . Je dois mal manipuler mon objet image quand je le passe en paramètre et je le récupère.



Code :
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
#Variables pour le while
 
	$c=10;#pour les array couleur
	$h=60;#Ici la hauteur, va falloir la faire commencer depuis en haut et descendre progressivement.
 
	while ($nb >=0)
	{
 
		$id=recupid($nb);
		$image=drawproj($image, $id,$c,$h);
		$c--;
		$nb--;
		$h=$h+50;
 
 
 
	}
	#Création de l'image
 
	imagepng($image, "images/monimage.png"); // on enregistre l'image dans le dossier "images"
 
	#Fonction connection BDD joomla.
 
	function drawproj($id,$c,$h,$image)
	{
 
		$name = mysql_fetch_array(requete_joomla("SELECT nom FROM jos_projets WHERE idproj = '$id'"));
 
		$dd = requete_joomla("SELECT ddebut FROM jos_projets WHERE idproj = '$id'");
		$df = requete_joomla("SELECT dfin FROM jos_projets WHERE idproj = '$id'");
 
		//récupération date début.
 
		$row = mysql_fetch_array($dd);
		$debut = $row['ddebut'];
		$timestamp = strtotime($debut);
		$year = date('Y', $timestamp);
		$d=$dat[$year];
 
 
		//récupération date de fin..
 
		$row = mysql_fetch_array($df);
		$fin = $row['dfin'];
		$timestamp = strtotime($fin);
		$year = date('Y', $timestamp);
		$f=$dat[$year];
 
		//Dessin du rectange
		$hp30=$h+30;
		ImageFilledRectangle ($image, $d, $h, $f, $hp30, $arr[$c]);
 
		$dn=$d+3;
		$hn=$h+7;
		$nproj= utf8_decode($name[nom]);
		imagestring($image, 3, $dn, $hn, $nproj, $noir);
 
		return $image;
	}
S'il vous faut d'autres éléments du code hésitez pas et merci d'avance pour votre aide!
magnus2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h57   #2
Invité régulier
 
Homme Loic
Étudiant
Inscription : décembre 2010
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Loic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 26
Points : 8
Points : 8
Bon alors j'ai avancé un peu, j'ai découvert qu'il faut ouvrir et fermer l'image un peu comme quand on fait du fopen et fclose. Du coup, j'ai modifié mon code comme suit (j'enlève le code qui n'a rien a voir avec le problème pour plus de clareté):

Code :
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
<?php
 
 
 
 
#Définition image et bases de couleur.
$image = imagecreate(1000,1000);
$blanc = imagecolorallocate($image, 255, 255, 255);
.
.
.
#####################
##Base du diagramme##
#####################
 
// Ici je déclare les bases du diagramme, je fout des lignes, des pointillés, du texte etc. Il n'y a que ceci qui s'affiche à la fin, toute la suite n'est pas prise en compte.
 
imagepng($image, "images/monimage.png");
 
#Fonction pour afficher les projets
	$nb=$num_proj-1;
	#Variables pour le while
 
	$c=10;#pour les array image
	$h=60;#Ici la hauteur, va falloir la faire commencer depuis en haut et descendre progressivement.
 
	while ($nb >=0)
	{
 
		$id=recupid($nb);
		$image=drawproj($id,$c,$h);
		$c--;
		$nb--;
		$h=$h+50;		
	}
	#Création de l'image
	//imagepng($image, "images/monimage.png"); // mis en commentaire car sinon ça retourne une erreur
 
 
	function drawproj($id,$c,$h)
	{
		$image= imagecreatefrompng("images/monimage.png");
		$name = mysql_fetch_array(requete_joomla("SELECT nom FROM jos_projets WHERE idproj = '$id'"));
 
		$dd = requete_joomla("SELECT ddebut FROM jos_projets WHERE idproj = '$id'");
		$df = requete_joomla("SELECT dfin FROM jos_projets WHERE idproj = '$id'");
		//récupération date début.
		.
		.
 
		//récupération date de fin..
		.
                .
                //J'ai fait ce test pour m'assurer que le bug ne venais pas de ce que je tente de dessiner.
		ImageFilledRectangle ($image, 20, 20, 70, 70, $noir);
 
                //Aucun changement, voici mon code donc:
                $hp30=$h+30;
		ImageFilledRectangle ($image, $d, $h, $f, $hp30, $arr[$c]);
 
		$dn=$d+3;
		$hn=$h+7;
		$nproj= utf8_decode($name[nom]);
		imagestring($image, 3, $dn, $hn, $nproj, $noir);
 
		imagepng($image, "new.png");
		imagedestroy($image);
	}
Merci encore
magnus2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 09h38   #3
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 269
Points : 7 269
Bonjour,

Code :
1
2
3
4
5
6
7
function drawproj($id,$c,$h)
	{
		global $image;
		$name = mysql_fetch_array(requete_joomla("SELECT nom FROM jos_projets WHERE idproj = '$id'"));
 
		$dd = requete_joomla("SELECT ddebut FROM jos_projets WHERE idproj = '$id'");
		$df = requete_joomla("SELECT dfin FROM jos_projets WHERE idproj = '$id'");
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h09.


 
 
 
 
Partenaires

Hébergement Web