phpbar.de logo

Mailinglisten-Archive

[php] imagegd2 Ausgabe an den Browser

[php] imagegd2 Ausgabe an den Browser

Götz Lohmann goetz at mrblackrose.de
Die Nov 16 00:05:21 CET 2004


Sebastian Mendel schrieb:

> Manfred Jordan wrote:
>
>> Hallo zusammen,
>>
>> habe da ein problem mit der Funktion imagegd2 (oder auch 
>> imagegif,imagejpeg)
>> Ich möchte ein Bild in einer Tabelle ausgeben. Folgender Code soll 
>> das tun.
>>
>> $img = @imagecreatetruecolor(100,10) or die("Cannot Initialize Image");
>> print "<TABLE>";
>> print "<TR><TD>".imagegd2($img)."</TD></TR>";
>> print "</TABLE>";
>> imagedestroy($img);
>>
>> Das Bild wird nicht in einer separaten Seite ausgegeben, sondern soll 
>> sich irgendwo auf der Seite in eben dieser Tabelle befinden.
>>
>> Beim IE klappt das auch wunderbar, allerdings nicht bei dem Mozilla 
>> Firefox z.B., dort werden nur Hyroglyphen angezeigt, anscheinend der 
>> Binärcode wie er in der Datei stehen würde.
>>
>> Ich denke mal, ich habe da bestimmt was falsch verstanden bzw. 
>> irgendwas vergessen, damit der browser mitbekommt, das dies nun ein 
>> bild sein soll.
>>
>> Weiß jemand Rat?
>
>
> du mischst hier Text (HTML) und Binär (Bild) Daten miteinander, was 
> zwar grundsätzlich geht, aber nur in einem Mutlipart-MIME-Dokuemnt, der
> IE ist sehr sehr nachsichtig bei vielen Fehlern in Webdokumenten und 
> stellt es deshalb richtig dar, der Mozilla hält sich da strenger an 
> die Regeln und macht es nicht.
>
> Du kannst das Bild z.b. über <img src="meinbildcript.php" /> einbinden.

Alternativ kann man auch folgenden Syntax verwenden:

  function CreateJPG($w,$h) {
    $img = @imagecreatetruecolor($w,$h) or die("Cannot Initialize Image");
    ob_start();
    ImageJPEG($img);
    $data = ob_get_contents();
    ob_clean();
    ImageDestroy($img);
    return $data;
  }
  echo "<TABLE>";
  echo "<TR><TD>";
  echo '<img 
src="data:image/jpeg;base64,'.base64_encode(CreateJPG(100,100)).'" 
with="100" height="100">';
  echo "</TD></TR>";
  echo "</TABLE>";

da nach der RFC2397 in HTML 4 Dokumenten auch Bilder direkt als 
Binärdaten eingebettet werden können, jedoch
ist die Länge eines Tags normalerweise begrenzt, dennoch zeigt bei mir 
der Mozilla Bilder bis selbst in der Größe 600x600 an ;-)

das obige Beispiel ist vor allem für temporäre Bilder zur 
Zugangskontrolle praktisch ..

regards, G. Lohmann

php::bar PHP Wiki   -   Listenarchive