Problem mit IMAGECREATE, Grafik kann nicht angezeigt werden

PhoenixDH

Erfahrenes Mitglied
Problem mit IMAGECREATE

Ich habe mit folgendem Quellcode, der vor einer Serverumstellung auf PHP5 einwandfrei funktioniert hat nun Probleme:
Code:
<?php
$mysql = mysql_connect($mysql_h, $mysql_u, $mysql_p);
$db = mysql_select_db($mysql_db);

$r_user = mysql_query("SELECT count(userid) AS usercount FROM ".$pref."user");
$user = mysql_result($r_user, 0);

$r_post = mysql_query("SELECT count(postid) AS postcount FROM ".$pref."post");
$post = mysql_result($r_post, 0);

$r_thread = mysql_query("SELECT count(threadid) AS threadcount FROM ".$pref."thread");
$thread = mysql_result($r_thread, 0);

$r_fights =  mysql_query("SELECT fightswon FROM ".$pref."gallery_photos WHERE fightswon>0");
$fights =0;
while($a_fights = mysql_fetch_array($r_fights))
{
   $fights = $a_fights[0] + $fights;
}

$r_bilder =  mysql_query("SELECT COUNT(photo_id) FROM ".$pref."gallery_photos GROUP BY photo_id");
$bilder = mysql_num_rows( $r_bilder );

$image = "/var/www/web/html/seite/board_image.png";
$image_end = "/var/www/web/html/seite/board_image2.png";
$im = imagecreatefrompng($image);
$tc = ImageColorAllocate ($im, 0, 0, 0);
ImageString($im, 3, 145, 0, "Statistik von XYZ", $tc);
ImageString($im, 2, 145, 12, "Mitglieder: $user", $tc);
ImageString($im, 2, 145, 23, "Gepostet: $post Beiträge in $thread Themen", $tc);
ImageString($im, 2, 145, 33, "Bilder in der Galerie: $bilder", $tc);
ImageString($im, 2, 145, 43, "Carfights: $fights", $tc);
header("Content-Type: image/png");
Imagepng($im,'',100);
Imagepng($im,$image_end);
ImageDestroy ($im);
?>

Es kommt immer die Meldung:
Die Grafik "XYZ" kann nicht angezeigt werden, weil sie Fehler enthält.

Woran kann das liegen?
Dank euch!
 
Zuletzt bearbeitet:
Hi,

stell doch mal zum Testen den Content-Type Header auf z.B. text/plain, damit man sieht, was dabei herauskommt. Vielleicht werden irgendwelche Warnungen ausgegeben, die Dein Bild dann natürlich zerstören.

LG
 
Daran hat es nicht gelegen, ich hatte wo ein Attribut zu viel vergeben, aber ich habe schon wieder ein neues Problem mit dem Code hier nach der Umstellung von PHP4 auf PHP5, aber ich kann keinen Fehler entdecken:
Code:
if ($mode=='normal') {
include("./inc/header.inc.php");
Header("Content-type: image/jpeg");
$image = ImageCreateFromJPEG("templates/default/images/map-karte.jpg");
$icon = ImageCreateFromPNG("templates/default/images/map-pin.png");
$trans = ImageColorAt($icon, 0, 0);
ImageColorTransparent($icon, $trans);
$width = ImageSX($icon);
$height = ImageSY($icon);

//Holen
$r_user = thwb_query("SELECT userid, username, userlocation, userlocx, userlocy
	FROM ".$pref."user WHERE userlocx > 0 and userlocy > 0 ORDER BY userid ASC ;");

while( $user = mysql_fetch_array($r_user) )
{
$x=$user[userlocx];
$xx=$user[userlocx] = $user[userlocx] - 3;
$xxx=$user[userlocx] = $user[userlocx] + 3;
$y=$user[userlocy];
$yy=$user[userlocx] = $user[userlocy] - 3;
$yyy=$user[userlocx] = $user[userlocy] + 3;
ImageCopyResized($image,$icon,$x-3,$y,0,
	0,$width/2,$height/2,$width,$height);
$white = ImageColorAllocate($image, $textrot,$textgruen,$textblau);
imagestring($image,4,$x,$y,$white);

$area.= '<map name="map1">
 	  <area alt="Hier wohnt $user[username]" title="Hier wohnt $user[username]" coords="$xx,$yy,$xxx,$yyy" shape="rect">
	</map>';

}

ImageJPEG($image);
ImageDestroy($image);

}

Und zwar wird das Image nicht generiert oder nicht angezeigt, zu sehen hier:
http://www.tuning-freaks-pfalz.de/Forum/mitgliederkarte.html

Woran kann das liegen?
 
Da grad nix zum PHP sauber formatiert anzuschauen poste ich den fehlerhaften Code mal in den richtigen Tags hier, damit man ihn lesen kann.
PHP:
if ($mode=='normal') {
include("./inc/header.inc.php");
Header("Content-type: image/jpeg");
$image = ImageCreateFromJPEG("templates/default/images/map-karte.jpg");
$icon = ImageCreateFromPNG("templates/default/images/map-pin.png");
$trans = ImageColorAt($icon, 0, 0);
ImageColorTransparent($icon, $trans);
$width = ImageSX($icon);
$height = ImageSY($icon);

//Holen
$r_user = thwb_query("SELECT userid, username, userlocation, userlocx, userlocy
	FROM ".$pref."user WHERE userlocx > 0 and userlocy > 0 ORDER BY userid ASC ;");

while( $user = mysql_fetch_array($r_user) )
{
$x=$user[userlocx];
$xx=$user[userlocx] = $user[userlocx] - 3;
$xxx=$user[userlocx] = $user[userlocx] + 3;
$y=$user[userlocy];
$yy=$user[userlocx] = $user[userlocy] - 3;
$yyy=$user[userlocx] = $user[userlocy] + 3;
ImageCopyResized($image,$icon,$x-3,$y,0,
	0,$width/2,$height/2,$width,$height);
$white = ImageColorAllocate($image, $textrot,$textgruen,$textblau);
imagestring($image,4,$x,$y,$white);

$area.= '<map name="map1">
 	  <area alt="Hier wohnt $user[username]" title="Hier wohnt $user[username]" coords="$xx,$yy,$xxx,$yyy" shape="rect">
	</map>';

}

ImageJPEG($image);
ImageDestroy($image);

}

Nachtrag:
Was macht die map in der Grafikerstellung? Das gehört mMn nicht in dieses Script. Dieses Script sollte nur eine Grafik ausgeben. Alles HTML-Zeugs gehört auf die HTML-Seite. Alt-Texte sind kein Bestandteil einer Grafik.

Nachtrag2:
Ich rate dir, aussagekräftigere Variablennamen zu verwenden - und Tabulatoren...

Nachtrag3:
1) hm.... warum definierst du $white jedesmal neu?
2) beim imagestring solltest du auch noch einen String mitgeben int imagestring ( resource $im, int $font, int $x, int $y, string $s, int $col )
3) Was bewirkst du mit dem folgenden Code?
PHP:
$x=$user[userlocx];
$xx=$user[userlocx] = $user[userlocx] - 3;
$xxx=$user[userlocx] = $user[userlocx] + 3;
sollte es nicht eher das folgende sein?
PHP:
$x=$user[userlocx];
$xx=$x- 3;
$xxx=$x + 3;
 
Zuletzt bearbeitet:
Hi,

wie gesagt, das ganze Script stammt aus einem Board-System.

Was die File machen soll, ist eine Karte zu generieren, in der die Punkte auf ner Karte sind wo die User wohnen.

Das hier klingt logisch:
PHP:
$x=$user[userlocx];
$xx=$x- 3;
$xxx=$x + 3;

das werde ich mal testen.

Also ich glaube die Variablen von z.B.
http://www.tuning-freaks-pfalz.de/Forum/map-display.php?mode=singel&x=504&y=930&username=Aries

kommen in dem Script nicht an, deswegen geschieht nichts.

Ich habe es schon mit:
PHP:
$x = $_GET['x'];
$y = $_GET['y'];
$username = $_GET['username'];

versucht, aber es tut sich nichts, keine Werte.
 
Zuletzt bearbeitet:
Zurück