Bonjour à tous,
je me permets de poster sur le forum car je n'arrive pas à résoudre mon problème malgré de nombreuses recherches.
J'ai l'erreur suivante (connue et reconnue) lorsque je veux créer une image :
L'image “...” ne peut être affichée car elle contient des erreurs.
Ceci est du au fait que je me plante quelque part lorsque je déclare header("Content-type: image/png")
Pour plus de prévisions, j'utilise la méthode MVC pour développer mon appli et voici une partie du code :
Mon controleur :
La classe Test (c'est pas encore fini, alors faut pas s'étonner de ce que ca fait)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 <?php require_once('test.php'); require_once('VUE_projet.php'); require_once('MOD_projet.php'); require_once('./Ressources/Objets/requeteBD.php'); class CTRL_projet{ function CTRL_projet($etape){ // .. .// $this -> Test = new Test(); // ... // if ($num_utilisateur == 1 && $num != 0 && ($detail != '' || $detail != 'liste')) { $detail = array(); $detail_projet = $this -> requeteBD -> detailProjet($num); $categorie_mere = $this -> requeteBD -> categorieMere($num); $nb_etape_projet = $this -> requeteBD -> nbEtape($num); $etape_projet = $this -> requeteBD -> etapeProjet($num); $nb_etape_fini = $this -> requeteBD -> nbEtapeFini($num); foreach ($nb_etape_projet as $nbe) { foreach ($nb_etape_fini as $nbf) { header("Content-type: image/png"); $graphe = $this -> Test -> graphique($nbe['cpte'], $nbf['cpte']); } } foreach ($detail_projet as $det) { foreach ($categorie_mere as $cat) { foreach ($nb_etape_projet as $nbe) { $_SESSION['nom_projet'] = $det['nom_projet_']; array_push($detail, array('nom_projet_'=>$det['nom_projet_'], 'nom_'=>$det['nom_'], 'prenom_'=>$det['prenom_'], 'libelle_'=>$det['libelle_'], 'date_debut_'=>$det['date_debut_'], 'date_fin_'=>$det['date_fin_'], 'libelle_categorie_'=>$cat['libelle_'], 'cpte_'=>$nbe['cpte'])); $duree = $this -> MOD_global -> duree($det['date_debut_'], $det['date_fin_']); } } } //print_r($detail); new VUE_projet(2, $detail, $etape_projet, $duree, $graphe); }
La fonction graphique, testée seule dans un fichier à part (et ca marche)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 <?php class Test { function Test() {} function graphique($nb_etape, $nb_fini) { $nb_encours = $nb_etape - $nb_fini; $image = @imagecreatetruecolor(200,10) or die ('Il y a un problème'); $rouge = imagecolorallocate($image, 255, 0, 0); $vert = imagecolorallocate($image, 0, 255, 0); imagefill($image, 0, 10, $rouge); for ($i = 0; $i < $nb_etape; $i++) { if ($nb_fini >= 1) { $src = imagecreatefrompng("./Ressources/images/prog_vert.png"); $temp = imagecreatetruecolor(200,11); for ($j = 0; $j < $nb_fini; $j++) { imagecopy ($temp, $src, 0, 0, $j * (200/$nb_etape)/$nb_fini, (200/$nb_etape)/$nb_fini, 200, 11); //imagefill($image, $j * (200/$nb_etape)/$nb_fini, (200/$nb_etape)/$nb_fini, $vert); } } $src = @imagecreatefrompng("./Ressources/images/prog_rouge.png"); $temp = @imagecreatetruecolor(200,11); for ($k = 0; $k < $nb_encours; $k++) { imagecopy ($temp, $src, 0, 0, $k * (200/$nb_etape)/$nb_encours, (200/$nb_etape)/$nb_encours, 200, 11); //imagefill($image, 0, 10, $rouge); //$k * (200/$nb_etape)/$nb_encours, (200/$nb_etape)/$nb_encours, $rouge); } imagedestroy($temp); } //header ("Content-type: image/png"); imagepng($src); //return $src; //header ("Content-type: image/png"); //$img = graphique(1,1); //imagepng($img); //imagepng($image); //imagedestroy($image); } } ?>
Merci pour votre aideCode:
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 function graphique($nb_etape, $nb_fini) { $nb_encours = $nb_etape - $nb_fini; $image = @imagecreatetruecolor(200,10) or die ('Il y a un problème'); $rouge = imagecolorallocate($image, 255, 0, 0); $vert = imagecolorallocate($image, 0, 255, 0); imagefill($image, 0, 10, $rouge); for ($i = 0; $i < $nb_etape; $i++) { if ($nb_fini >= 1) { $src = imagecreatefrompng("../Ressources/images/prog_vert.png"); $temp = imagecreatetruecolor(200,11); for ($j = 0; $j < $nb_fini; $j++) { imagecopy ($temp, $src, 0, 0, $j * (200/$nb_etape)/$nb_fini, (200/$nb_etape)/$nb_fini, 200, 11); //imagefill($image, $j * (200/$nb_etape)/$nb_fini, (200/$nb_etape)/$nb_fini, $vert); } } $src = @imagecreatefrompng("../Ressources/images/prog_rouge.png"); $temp = @imagecreatetruecolor(200,11); for ($k = 0; $k < $nb_encours; $k++) { imagecopy ($temp, $src, 0, 0, $k * (200/$nb_etape)/$nb_encours, (200/$nb_etape)/$nb_encours, 200, 11); //imagefill($image, 0, 10, $rouge); //$k * (200/$nb_etape)/$nb_encours, (200/$nb_etape)/$nb_encours, $rouge); } imagedestroy($temp); } } header ("Content-type: image/png"); $img = graphique(1,1); imagepng($img);