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 :
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
 
<?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 classe Test (c'est pas encore fini, alors faut pas s'étonner de ce que ca fait)
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
 
<?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&egrave;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);
	}
}
?>
La fonction graphique, testée seule dans un fichier à part (et ca marche)
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
 
function graphique($nb_etape, $nb_fini) {
		$nb_encours = $nb_etape - $nb_fini;
		$image = @imagecreatetruecolor(200,10) or die ('Il y a un probl&egrave;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);
Merci pour votre aide