Dans un premier temps, le header dans chacune de tes fonctions est inutil. Il est nécessaire uniquement au moment où tu veux afficher ton image. Dans ton cas, le plus simple serait de l’intégrer directement dans ton fichier cartographie.
Ensuite, dans la programmation objet, le constructeur sert à initialiser tes attributs ou objets pour qu’ils soient utilisés dans tes méthodes. Or dans ton constructeur tu retournes ton image créé, ce qui est faux car le constructeur ne retourne rien. Dans ton fichier cartographie, tu récupères juste une instance de ton objet image. En bref, dans cartographie, tu manipules un objet null.
Tu trouveras ci-dessous une version allégée de ton code et plus propre :
image.class.php
<?php
class image{
private $pic;
public function __construct($x, $y)
{
$this->pic = imagecreate($x,$y);
}
public function setColorImage($r, $g, $b)
{
imagecolorallocate($this->pic, $r, $g, $b);
}
public function showPic()
{
header ("Content-type: image/png");
imagepng($this->pic);
}
}
?>