header ("Content-type: image/jpeg");
//echo "Farbliste
";
$aktfile = "/hsphere/local/home/umwelt/cug.umweltnetz.ch/bildchen/farb09/farbdaten.txt";
if (file_exists($aktfile))
{
if ($datei = fopen ($aktfile, "r"))
{
$xx=0;
while (!feof ($datei))
{
$zeile = fgetcsv ($datei, 100);
$xx=$xx+1;
$werte[$xx][0] = $zeile[0]; //mittelfarb
$werte[$xx][1] = $zeile[1]; //r
$werte[$xx][2] = $zeile[2]; //g
$werte[$xx][3] = $zeile[3]; //b
$werte[$xx][4] = $zeile[4]; //filenam
}
fclose ($datei);
$farbmax = $xx;
}
} else
{
echo "Datei $aktfile nicht vorhanden";
}
//echo $farbmax." Farben
";
//flush();
for ($iijj=1;$iijj<=10;$iijj++) { // mehrere Grafiken
$hraster = 23;
$vraster = 16;
//matrix mit leerzeichen füllen
for ($mm=1;$mm<=$hraster;$mm++) {
for ($nn=1;$nn<=$vraster;$nn++) {
$punkte[$mm][$nn] = 0;
} //ende nn
} //ende mm
//fiktiver mittelpunkt
$hmittel = round(mt_rand(1,$hraster),0);
$vmittel = round(mt_rand(1,$vraster),0);
//$anzleer = 3;
//for ($ii=1;$ii<=$anzleer;$ii++) {
//$hleer = $hraster;
//$vleer = round(mt_rand(1,$vraster),0);
//$punkte[$hleer][$vleer] = -1;
//}
$hleer = $hraster;
$vleer = $vraster;
$punkte[$hleer][$vleer] = -1;
$punkte[$hleer][$vleer-1] = -1;
$punkte[$hleer][$vleer-2] = -1;
//abstandsberechnungen zum fiktiven mittelpunkt
$maxabst=0;
$maxh=0;
$maxv=0;
for ($mm=1;$mm<=$hraster;$mm++) {
for ($nn=1;$nn<=$vraster;$nn++) {
if ($punkte[$mm][$nn] != -1) {
$abstand =sqrt(pow(($hmittel-$mm),2)+pow(($vmittel-$nn),2));
$punkte[$mm][$nn] = $abstand;
if ($abstand>$maxabst) {
$maxabst=$abstand;
$maxh=$mm;
$maxv=$nn;
}
}
}
}
// berechnung grafikwert
for ($mm=1;$mm<=$hraster;$mm++) {
for ($nn=1;$nn<=$vraster;$nn++) {
if ($punkte[$mm][$nn] != -1) {
$punktwert = 10 + round($punkte[$mm][$nn] / $maxabst * ($farbmax-20)) + round(mt_rand(-10,10),0);
if ($farbbenutzt[$punktwert]=1) { //schon benutzt
$untwert=max(1,$punktwert-75);
$obwert=min($punktwert-75,$farbmax);
$diffdiff = min(abs($punktwert-$untwert),abs($punktwert-$obwert));
$geaend=0;
$laufvar = $punktwert;
for ($jj=1;$jj<=$diffdiff;$jj++) {
for ($vv=1;$vv<=2;$vv++) {
if ($vv=1) $vorzf = 1;
if ($vv=2) $vorzf = -1;
}
$aktpos=$laufvar + $vorzf * $jj;
if ($geaend==0){
if ($farbbenutzt[$aktpos]=0) {
$punktwert = $aktpos;
$geaend =1;
}
}
}
}
$punkte[$mm][$nn] = $punktwert;
$farbbenutzt[$punktwert]=1;
}
}
}
//echo "
";
for ($nn=1;$nn<=$vraster;$nn++) {
//echo "";
for ($mm=1;$mm<=$hraster;$mm++) {
//echo "".$punkte[$mm][$nn]." | ";
}
//echo "
";
}
//echo "
";
// ab hier grafik
//A4-Format
$bildh = 1936;
$bildv = 1369;
$image = imagecreatetruecolor($bildh, $bildv);
$fuellfarbe = imageColorAllocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $bildh, $bildv, $fuellfarbe);
$bchenh=20;
$bchenv=20;
$fakth= $bildh/($bchenh*$hraster);
$faktv= $bildv/($bchenv*$vraster);
$bchh1 = ceil($bchenh*$fakth);
$bchv1 = ceil($bchenv*$faktv);
//echo "fakth faktv: ".$fakth." ".$faktv."
";
//echo "bchh1 bchv1: ".$bchh1." ".$bchv1."
";
for ($mm=1;$mm<=$hraster;$mm++) {
for ($nn=1;$nn<=$vraster;$nn++) {
if ($punkte[$mm][$nn] != -1) {
if ($punkte[$mm][$nn] == 0) $punkte[$mm][$nn] =1;
$xpos = round(($mm-1) * $bchenh * $fakth);
$ypos = round(($nn-1) * $bchenv * $faktv);
//echo $xpos."/".$ypos.": "."bild/".$werte[$punktwert][4]."
";
$bildnam = "farb09/".$werte[($punkte[$mm][$nn])][4];
$imageo = imagecreatefromjpeg($bildnam);
imagecopyresized ($image, $imageo, $xpos, $ypos, 0, 0, $bchh1, $bchv1, $bchenh, $bchenv);
} //if für -1
} //for nn
} //for mm
// texteinträge
//matrix mit leerzeichen füllen
for ($mm=1;$mm<=$hraster;$mm++) {
for ($nn=1;$nn<=$vraster;$nn++) {
$textfeld[$mm][$nn] = "_";
} //ende nn
} //ende mm
$spaltet1 = round(mt_rand(2,5),0);
$zeilet1 = round(mt_rand(3,6),0);
$textfeld[$spaltet1][$zeilet1] = "F";
$textfeld[$spaltet1+1][$zeilet1] = "r";
$textfeld[$spaltet1+2][$zeilet1] = "o";
$textfeld[$spaltet1+3][$zeilet1] = "h";
$textfeld[$spaltet1+4][$zeilet1] = "e";
$textfeld[$spaltet1+6][$zeilet1] = "W";
$textfeld[$spaltet1+7][$zeilet1] = "e";
$textfeld[$spaltet1+8][$zeilet1] = "i";
$textfeld[$spaltet1+9][$zeilet1] = "h";
$textfeld[$spaltet1+10][$zeilet1] = "n";
$textfeld[$spaltet1+11][$zeilet1] = "a";
$textfeld[$spaltet1+12][$zeilet1] = "c";
$textfeld[$spaltet1+13][$zeilet1] = "h";
$textfeld[$spaltet1+14][$zeilet1] = "t";
$textfeld[$spaltet1+15][$zeilet1] = "e";
$textfeld[$spaltet1+16][$zeilet1] = "n";
$spaltet2 = round(mt_rand($spaltet1,17),0);
$zeilet2 = $zeilet1+2;
$textfeld[$spaltet2][$zeilet2] = "2";
$textfeld[$spaltet2+1][$zeilet2] = "0";
$textfeld[$spaltet2+2][$zeilet2] = "0";
$textfeld[$spaltet2+3][$zeilet2] = "9";
$spaltet3 = 2;
$zeilet3 = round(mt_rand(10,14),0);
$textfeld[$spaltet3][$zeilet3] = "E";
$textfeld[$spaltet3+1][$zeilet3] = "i";
$textfeld[$spaltet3+2][$zeilet3] = "n";
$textfeld[$spaltet3+4][$zeilet3] = "g";
$textfeld[$spaltet3+5][$zeilet3] = "u";
$textfeld[$spaltet3+6][$zeilet3] = "t";
$textfeld[$spaltet3+7][$zeilet3] = "e";
$textfeld[$spaltet3+8][$zeilet3] = "s";
$textfeld[$spaltet3+10][$zeilet3] = "N";
$textfeld[$spaltet3+11][$zeilet3] = "e";
$textfeld[$spaltet3+12][$zeilet3] = "u";
$textfeld[$spaltet3+13][$zeilet3] = "e";
$textfeld[$spaltet3+14][$zeilet3] = "s";
$textfeld[$spaltet3+16][$zeilet3] = "J";
$textfeld[$spaltet3+17][$zeilet3] = "a";
$textfeld[$spaltet3+18][$zeilet3] = "h";
$textfeld[$spaltet3+19][$zeilet3] = "r";
$spaltet4 = round(mt_rand(2,17),0);
$zeilet4 = $zeilet3+2;
$textfeld[$spaltet4][$zeilet4] = "2";
$textfeld[$spaltet4+1][$zeilet4] = "0";
$textfeld[$spaltet4+2][$zeilet4] = "1";
$textfeld[$spaltet4+3][$zeilet4] = "0";
$fontsize = round(0.035 * $bildv);
//textausgabe
for ($mm=1;$mm<=$hraster;$mm++) {
for ($nn=1;$nn<=$vraster;$nn++) {
if ($textfeld[$mm][$nn] != "_") {
$xpost = round(($mm-1) * $bchenh * $fakth + 0.2 * $bchenh * $fakth);
$ypost = round(($nn-1) * $bchenv * $faktv - 0.2 * $bchenv * $faktv);
$aktmittcode =$werte[($punkte[$mm][$nn])][0]+90;
if ($aktmittcode > 255) $aktmittcode =$werte[($punkte[$mm][$nn])][0]-70;
// if ($aktmittcode < 0) $aktmittcode =0;
$black = imageColorAllocate($image, $aktmittcode, $aktmittcode, $aktmittcode);
ImageTTFText ($image, $fontsize, 0, $xpost, $ypost, $black, "font/frtbo.TTF", $textfeld[$mm][$nn]);
} //ende if
} //ende nn
} //ende mm
//Ausgabe des Bildes im Browser
imagejpeg($image,"file".$iijj.".jpg");
imagejpeg($image);
imagedestroy($image);
} // ende for mehrere grafiken
?>