schau dir mal die Header an, die das Script sendet.
|
|
Das AJAX Kompendium jetzt 84% Rabatt
Ajax - der Technologiemix aus JavaScript und XML - ist eines der Kernstücke professioneller Web 2.0-Programmierung. Dieses Buch führt Sie auf über 800 Seiten(!) von den ersten JavaScript-Codezeilen bis zur Entwicklung mit Ajax-Frameworks. Preis: früher: 49,95€ - jetzt nur: 7,95€ Hier geht es direkt zum Buch Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar! |
Hi,
folgender gering modifizierte script läuft (Aufruf mit ?pic=meinbild.png):
Bemerkungen:PHP-Code:<?php
header("Content-type: image/png");
$pic = $_GET['pic'];
$bild = $pic;
$size = getimagesize($bild);
$breite = $size[0];
$hoehe = $size[1];
$neueBreite = 60;
$neueHoehe = intval($hoehe*$neueBreite/$breite);
$altesBild = ImageCreateFromPNG($bild);
$neuesBild = ImageCreate($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImagePNG($neuesBild);
?>
- <? reicht meiner Testumgebung nicht, will <?php haben.
- header("Content-type: image/png"); hab ich mit Absicht an den Anfang gestellt, davor darf nichts erfolgen, was irgendwie die Ausgabe betrifft (html-tag etc.). Der script muss mit <?php anfangen und duldet weder Space noch Leerzeile !!!
kkapsner liegt mit seiner Vermutung dass mit anderen Code gearbeitet wird als hier gezeigt wurde nach meiner Meinung richtig.
OK hab ich soweit eingebaut, nur zeigt er mir jetzt steht dann im Browser:
Code:‰PNG ��� IHDR���<���F���§›ç���PLTEnlYjhUVRBMC8ME;QI@riZ„{m…€l}xe†~l…}poiWiYOO@6B90,#$3+!?6- #>&[8$uH0ˆU7d:˜tB¤†L¦‡O¥†M¦‡N¦‡M£„K¦†M¥‡L¤„N¢ƒJ£…J¤…L73(51&VRGihYSQBJH8MGc^JWP?c[N{tc~uete‡{nc\IGB/ +F* c<*zK4‰V9“f?—sB¥ŠN¨ˆP§‰N©ŠQ§ˆO¨ŠN¥†K¡‚I1,'0+'62(2.$.+/-"51(A>2JF:FA5VNA[RF_THVQE€|h{gMI586' 1 O1&nA/‚O4ŽY:’e>˜rBªŠS¨‰P§ˆP§‰M30&63)2/#94-2/'30(3/$85(;5+MH‚x>Ê!t)¸×¶_Wž*‡Ug*çRn— !ðSnOUдzâ…KÀN¯§jvŸkj‡Ây¤”š[z¥H²‡•'c5 ·G"ÐQ%ëÅ`5×â&p[’Ü+$OjFó²HH’>ÛúÓ` *PÞ U=Ë`ŠÏ!EˆÓ…v ¨Bá9•ä^ãcƒ›ÔN€¿8L< ŽÐ+V’â¯Uko„Ô<} 8[핤Šh”ãB*“¹šØt›j-'°º(ì«^ Ù…³"ÁUÙ�ï/zPU*Ëô†~1ØVá´²z (Š‚"Ù8ìÏÅð“®è‹À…íwDö–NÜ«É*l= gЧÉ>lÁ%¤qJK ‰+ï©U§è2˜÷"p †&hkSTµœT¢ ·? È0ìøáÁGš1†M‰�œÕ÷a/=¡jSÚp5\¶€ŠG"‰VôM ÇŽTàÙÜÁäÏðÆs!¸9œÍá)‘�‡8„oölëªU"¹¾�œIí%µ·>RuË€Ö( ³[[ùˆä>?l}àÖa.Ù Ôe6R”\”»–#Å 3ðnš—T–Nƒ[°äuqÐý¢Q=áIQ‘Ò¦è8Làq+ÈB¥Á…Ù¸•÷$ÏŽƒgD‘UBÌ‹a¦(ׯUT)lKrzÀ`O±SÒqšS#’A êÏ›Qø_xTŸ ´tx“ÃÉò|òF¨Š—(,‹¢ýÑsÌâMÈçÕ¥-nV€f AK 8áæ£°A¢DRÑV¹a\¤˜óÀ>‡“m”R*8^²I,|A“ÆÙUÝôÔ¸ñ<°Zßr8¨—�1²èqBŠ*Âfq%v7™õÿ=…ñ”˜µXÝ4[Ʋ<áU”ÉyΩ@d QkÒÌñJC¡=žg÷ã±XŒ©³/ª«cì…1ðÜÙÚK·Òtï)—$8XÁ³ÙD*N3&–h†â-·T¨ÆÂxw¬;/Öò7ÐN«ÕêÖÍé´:½e° y$oÇâÚ’nñ„aþ–Ø`PÍìŽiŒÆ0qF<ÖÜBÃŽ&qµ!=¬*G*g–†…ú>¶ìÅ;ÏÄïCp̧垎3ÚÿÍ÷ú…ô$±eiuÌ}qFtên¶køvsþHL5,žå ’T+±Å)!µî·3ò4ìØµx5aeY„[åâ…†âhC!žu"Ëõ)ÚÖ# ’�xtz`šŠº%‰Á˼=e�W�,ñ¬u*Öúbe±ÆïvC¶Š«U,Ê„"æJ¬Ü#kxµ‚^G%ß«bN]µÅÊ0Õà•¤³k“hS“«Ò´ N5grPJ<ýÞe£o¦ÂÖ†ÑvEÍ\2ÚärU&*½ë×{½M'^aÀ{D›”k* פÅÛz$ÎÈÕ5sÀ~N$*+›¼ÞîÍ5¿Õ›#‰èvÉHƒ- v†ÿìgJµÐ:ÄÊ����IEND®B`‚
Das schaut doch schon mal nach nem Bild aus
... Spaß bei Seite: da fehlt jetzt der richtige Header:PHP-Code:header("Content-Type: image/png");
den hatte er doch von anfang an drinne, jedenfalls in dem code, den er uns gezeigt hat.
Der Header wird implizit vorher gesetzt, im Browser müsste auch noch eine Warnung zu sehen sein:
Code:Warning: Cannot modify header information - headers already sent by (output started at C:\XAMPP\htdocs\test\testresize.php:1) in C:\XAMPP\htdocs\test\testresize.php on line 2 ‰PNG IHDR<P·ä `0PLTEÿÿ€ÿŒŒFááqÐÐhMM&ÙÙlééu½½_||>ššM²²Y§§Thh4ððxù{—IDATH‰íÐM Â@ ༶ԕ0úƒº(9ݹÔ#x/"xÏéª3¶Ž§Ù(.$/Ë/Bˆ´@Õïq&µÂ’ÐÈÞóýì@TNÜaàbwi°bv|oœE¦5¸@Î-mbl˜û‰,OžVÇÓ½í^ÛÒóø[Rù£|[ð™Æ(ß–vš±±±±±ñß1«i7l–Ûý³ªIEND®B`‚
Außer er hat nicht error_reporting(E_ALL); - was ich dringenst empfehle.
error_reporting(E_ALL); ist drin, kp warum da keine fehlermeldung kommt, im rest der homepage kommts
Habe eigenartige Resultate Fehler im Zusammenhang mit dem Erstellen von Grafiken und error_reporting(E_ALL) erhalten (Fehler absichtlich provziert).
Das erste ist klar
Beispiel 2 ist für mich auch noch halbwegs logisch:PHP-Code:<?php
//Grafik wird angezeigt + keine Warnung oder Fehlermeldung
$testvar = $nichtvorhanden;
header("Content-type: image/png");
:
ImagePNG($neuesBild);
?>
Für Beispiel 3 hab ich keine richtige Erklärung, das error_reporting wird durch den Grafikheader ausgehebelt, aber was die Grafik betrifft ?PHP-Code://Notice: Undefined variable und Warnig wird ausgegeben, keine Grafik
error_reporting(E_ALL);
$testvar = $nichtvorhanden;
header("Content-type: image/png");
:
Fazit hieraus:PHP-Code://im IE:keine Notice und kein Warnig wird ausgegeben
//und eine leere Grafik
//im FF: Die Grafik kann nicht angezeigt werden da sie Fehler enthält
error_reporting(E_ALL);
header("Content-type: image/png");
$testvar = $nichtvorhanden;
:
Wenn Ergebnisse diskutiert werden muß man wohl fragen mit welchen Browser diese zustande kamen.
@Tectum: Bei der Fehlersuche sollten wir uns auf dein php script zum Erzeugen der Grafik konzentrieren und diesen aus der Browserzeile aufrufen.
Mit den obigen lauffähigen Beispiel solltest du deine Grafik angezeigt bekommen, wenn du als Parameter pic dein Grafikfile einträgst.
das ist überhaupt nicht merkwürdig.
Der server schickt den png-header, d.h. alles was jetzt kommt stellt der browser nicht als text dar sondern interpretiert das als bild. da der text der Fehlermeldung "notice: undefined bla" kein gültiges bild ist landet also ein kaputtes bild im browser.
Wenn die Fehlermeldung vor dem png-header entsteht dann schickt der server schon effektiv text an den browser und setzt daher den standardheader text/html - wenn du in der folgenden Zeile dann deinen png header setzen willst klappt das nicht und stattdessen kommt eine meldung ala "headers already sent"
gut header ist ja drin und wenn ich es als bild ausgeben will ala <img src="pic.php?pic=test"> dann kommt einfach nix!
Testlink!
Testlink ist weniger wichtig als vllt. noch mal der jetzt vorhandene komplette PHP Quelltext. Denn hier könnten event. Fehler abgeleitet werden, aus dem Testlink bei PHP ja eher weniger.
Zitat aus German-Bash.org:
<N00b> html div oder was ?
<devil-driver> ok, stell dir vor html is deine muttersprache (statt deutsch) - und du die techniken (framesets, div-container, tabellen) sind die dialekte. dann wäre
- div-container -> hochdeutsch. versteht jeder
-tabellen -> bayrisch. verstehen manche, hört sich aber immer lustig an
- framesets -> übelstes sächsisch. versteht keiner, will auch niemand...
----
http://game3.skysimulation.de/tauschen.php?a=-2927
----
Lesezeichen