Bild mit PHP zu Laufzeit erstellen gibt header Fehler
Jürgen
- php
0 Sven Rautenberg0 Jürgen
0 Thomas Luethi0 Jürgen
Hallo,
ich habe da mal wieder eine frage:
ich habe eine ganz normale PHP-Seite, die auch Fehlerfrei angezeigt wird (bei IE und bei Mozilla). Nun wollte ich ein Bild zur Laufzeit mit Hilfe von PHP ändern, es speichern und dann auf der zuvor noch fehlerfreien Seite anzeigen.
Unter IE kein Thema, aber Mozilla gibt immer eine Fehlermeldung:
"The image http://www.fetenplaner.de/partyfotos/fotogross.php?bildnr=87&pfad=130902a&archive=partyarchive&nr=177&table=partyfotos cannot be displayed, because it contains errors."
Was hat das zu bedeuten. wenn ich nur das Bild generiere und anzeigen lasse, sonst aber alle Tags wie <html><body>,... rauslasse geht es?
Ich hatte mir überlegt, dass ich ja im Prinzip ein Frameset bauen kann, welches aus "oben" mit 0 Pixeln und "unten" mit * Pixeln besteht. Die Seite "oben" würde das Bild generieren und die Seite "unten" würde das anzeigen. Prob ist aber, dass zum Teil die Seite "unten" zu schnell geladen wird und somit das Bild noch nicht erstellt und gespeichert ist.
Wie kann man sowas denn anders und eleganter lösen?
Danke für die Hilfe
Moin!
Unter IE kein Thema, aber Mozilla gibt immer eine Fehlermeldung:
"The image http://www.fetenplaner.de/partyfotos/fotogross.php?bildnr=87&pfad=130902a&archive=partyarchive&nr=177&table=partyfotos cannot be displayed, because it contains errors."
Was machst du denn, um das Bild zu generieren? Ist dir klar, dass du so ein Bild unabhängig von irgendeiner Seite mit <img> einbinden mußt, und dass das auf diese Weise aufgerufene PHP-Skript nur ordentliche Bilddaten liefern darf, und sonst nichts?
Ich hatte mir überlegt, dass ich ja im Prinzip ein Frameset bauen kann, welches aus "oben" mit 0 Pixeln und "unten" mit * Pixeln besteht. Die Seite "oben" würde das Bild generieren und die Seite "unten" würde das anzeigen. Prob ist aber, dass zum Teil die Seite "unten" zu schnell geladen wird und somit das Bild noch nicht erstellt und gespeichert ist.
Vollkommen unnötig und sinnlos.
- Sven Rautenberg
hallo,
ich generiere das bild wie folgt:
<?
header("Content-type: image/jpeg");
$str="http://www.***.de";
$datei="../zeigebild/bild"."_"."$userid"."_"."$bild_name_zusatz".".jpg";
$foto="$bildnr"."_JPG.jpg";
$bild="../$archive/$pfad/Bilder/$foto";
$vorhanden=file_exists("$bild");
if ($vorhanden){
$altes_bild=imagecreatefromjpeg($bild);
$hoehe=imagesy($altes_bild);
$breite=imagesx($altes_bild);
if ($breite > $hoehe) {
$img=imagecreatetruecolor(400,300);
imagecopyresized($img,$altes_bild,0,0,0,0,401,301,$breite,$hoehe);
} else {
$img=imagecreatetruecolor(300,400);
imagecopyresized($img,$altes_bild,0,0,0,0,301,401,$breite,$hoehe);
}
$text_color=ImageColorAllocate ($img, 255, 255, 255);
$unten="$str";
$oben="$datum $namen";
$hoehe=imagesy($img);
$breite=imagesx($img);
$x=$breite-180;
$y=$hoehe-20;
imagestring($img,2,$x,$y,$unten, $text_color);
imagestring($img,2,10,10,$oben, $text_color);
imagejpeg($img,($datei));
imagedestroy($img);
?>
Hallo,
"The image http://www.fetenplaner.de/partyfotos/fotogross.php?bildnr=87&pfad=130902a&archive=partyarchive&nr=177&table=partyfotos cannot be displayed, because it contains errors."
http://www.fetenplaner.de/partyfotos/fotogross.php?bildnr=87&pfad=130902a&archive=partyarchive&nr=177&table=partyfotos
http://www.fetenplaner.de/partyfotos/fotogross.php?bildnr=87
liefern beide einen HTTP-Head mit
Content-Type: image/jpeg
aber dann schicken sie JavaScript-Code:
<SCRIPT LANGUAGE="JavaScript">
<!--
<!--
var newWin = null;
function foto_gross(loc) {
u.s.w.
Also mach, dass das PHP-Skript effektiv ein Bild liefert,
wenn Du ein Bild meinst.
Ich hatte mir überlegt, dass ich ja im Prinzip ein Frameset bauen kann [...]
Um Gottes Willen keine Frames!
Behebe das Problem - liefere richtige Bilder aus.
Wenn es in zwei Zeiten geschehen muss, mach halt
eine "Vorschaltseite", die das Bild generiert, und
dann dort einen Link (und ggf. ein META-Redirect)
auf die Seite, die das Bild einbettet.
Gruesse,
Thomas
also darf ich nachdem ich das bild generiert habe keine javascripts aufrufen?
Moin!
also darf ich nachdem ich das bild generiert habe keine javascripts aufrufen?
Nein.
Du hast ein Verständnisproblem.
Ein generiertes Bild ist nichts anderes als ein auf dem Server als Datei abgelegtes Bild.
Du rufst es mit <img src="bildurl"> auf und bindest es in die Seite ein. Der Browser empfängt dann alle Daten, die das Bild ausmachen - ob nun aus der Datei oder generiert - egal.
Du mußt dich in pro Skript entscheiden: Entweder HTML, CSS und Javascript generieren, oder ein Bild. NICHT MISCHEN!
- Sven Rautenberg
aaahhh, ok geht. vielen dank.
es lag also daran, dass ich zwei headers gesendet habe!?
Hallo,
es lag also daran, dass ich zwei headers gesendet habe!?
Nein, Du willst mit dem Skript wohl zuviel auf einmal.
Es wird sowieso nur ein Content-Type Header geschickt,
naemlich der zuletzt definierte.
---
Ich wuerde zwei Skripts machen.
Dann verschwindet auch Dein Missverstaendnis.
bild.php
Liefert die Bilder aus
Content-Type: image/jpeg
album.php
Liefert HTML-Code (und evtl. JavaScript-Code) aus.
Content-Type: text/html
Dort bindest Du die Bilder dann normal mit IMG-Tags ein:
<img src="bild.php?parameter=...">
Gruesse,
Thomas