Hallo,
ich versuche innerhalb eines einmligen Ausführens einer PHP-Datei mehrere Grafiken automatisch zu erstellen, dazu rufe ich mehrfach eine Klasse Image auf, die mir jeweils ein Bild erzeugt:
[PHP]
class Image
{
public $Bild;
public $HinterGrundFarbe;
public $AchsenFarbe;
public $SchriftFarbe;
public $KreuzFarbe;
public $FehlerFarbe;
public $HilfsLinienFarbe;
public $Farbe;
public $SchriftGroesse;
public $SchriftHoehe;
public $SchriftBreite;
public $AchsenSchriftGroesse;
public $AchsenSchriftHoehe;
public $AchsenSchriftBreite;
public $UeberSchriftGroesse;
public $UeberSchriftHoehe;
public $UeberSchriftBreite;
public $GleichungSchriftGroesse;
public $GleichungSchriftHoehe;
public $GleichungSchriftBreite;
function createNewImage($Hoehe,$Breite)
{
$this->Bild=imagecreate($Breite,$Hoehe);
}
function setBackgroundColour()
{
$this->HinterGrundFarbe=imagecolorallocate($this->Bild,255,255,255);
}
function setColours()
{
$this->AchsenFarbe=imagecolorallocate($this->Bild,0,0,0);
$this->SchriftFarbe=imagecolorallocate($this->Bild,0,0,0);
$this->KreuzFarbe=imagecolorallocate($this->Bild,255,0,0);
$this->FehlerFarbe=imagecolorallocate($this->Bild,180,180,180);
$this->Farbe['red']=imagecolorallocate($this->Bild,255,0,0);
$this->Farbe['blue']=imagecolorallocate($this->Bild,0,0,255);
$this->Farbe['green']=imagecolorallocate($this->Bild,0,255,0);
$this->Farbe['pink']=imagecolorallocate($this->Bild,255,0,255);
$this->Farbe['lightblue']=imagecolorallocate($this->Bild,0,255,255);
}
function setFonts()
{
$this->SchriftGroesse=3;
$this->SchriftHoehe=imagefontheight($this->SchriftGroesse);
$this->SchriftBreite=imagefontwidth($this->SchriftGroesse);
$this->AchsenSchriftGroesse=4;
$this->AchsenSchriftHoehe=imagefontheight($this->AchsenSchriftGroesse);
$this->AchsenSchriftBreite=imagefontwidth($this->AchsenSchriftGroesse);
$this->UeberSchriftGroesse=5;
$this->UeberSchriftHoehe=imagefontheight($this->UeberSchriftGroesse);
$this->UeberSchriftBreite=imagefontwidth($this->UeberSchriftGroesse);
$this->GleichungSchriftGroesse=4;
$this->GleichungSchriftHoehe=imagefontheight($this->GleichungSchriftGroesse);
$this->GleichungSchriftBreite=imagefontwidth($this->GleichungSchriftGroesse);
}
function saveImage($Pfad)
{
imagegif($this->Bild,$Pfad);
imagedestroy($this->Bild);
}
[/PHP]
Im Hauptprogramm sieht das wie folgt aus:
[PHP]
$Rand=70;
$Breite=2*$Rand+$xAchse;
$Hoehe=2*$Rand+$yAchse;
$Image=new Image;
$Image->createNewImage($Hoehe,$Breite);
$Image->setBackgroundColour();
$Image->setColours();
$Image->setFonts();
.
.
.
$Image->saveImage($Ordner.'OUTPUT/'.$DateiInfo.'_1.gif'); # natürlich wird nicht immer in selbe Datei geschrieben
[/PHP]
Und das wird immer wieder ausgeführt! Das erste Bild wurde mir noch gezeichnet. Doch das Zweite dann nicht mehr. Alles ist weiß! Ich hatte das Problem schon mal, und zwar lag es an imagecolorallocate(), und das man eine Farbe nur 1mal erstellen lassen kann. Bloß wie soll man das machen, wenn man mehrere Grafiken und dafür immer wieder eine Klasse aufruft ?
Gruß.