Marc D: Bild erstellen

Hallo,

ich möchte mit PHP dynamisch ein Bild erstellen und dieses an den Browser senden. Klappt auch gut, allerdings nur im IE, in allen anderen Browsern wird Zeichenmüll ausgegeben.

Zur Erstellung:

So sieht die PHP Datei aus (bild.jpg jeißt sie):

<?php
header("content-type="image/jpeg"");

$new_image = @imagecreatefromjpeg("bild.jpg");

// Dann werden noch Texte reingeschrieben

imagejpeg($new_image,"",80);
?>

Über eine htaccess Datei habe ich per ForceType gesagt, dass der Server die Datei als PHP behandeln soll.

Wie gesagt, es funktioniert im IE, bei anderen Browsern kommt der Zeichnmüll. Wie kann ich erreichen, dass das Bild auch bei anderen Browsern gezeigt wird? Stimmt der Header nicht? Oder muss ich noch was in die htaccess schreiben?

Vielen Dank für jede Hilfe

Marc

  1. Über eine htaccess Datei habe ich per ForceType gesagt, dass der Server die Datei als PHP behandeln soll.

    was meinst du damit?
    Wenn der Server richtig konfiguriert ist und das script .php als Endung hat, wird das script ja immer als php erkannt. nimm das mal raus und sag uns was dann kommt.. nämlich wenn dir anderen browser nicht wissen, dass das ein bild ist kommt sowas raus.
    In manchen Sachen ist der IE ja ein bisschen gütiger

    1. Über eine htaccess Datei habe ich per ForceType gesagt, dass der Server die Datei als PHP behandeln soll.

      was meinst du damit?

      Ich habe dem Server gesagt, dass diese Jpeg Datei für ihn eine PHP Datei ist

      Wenn der Server richtig konfiguriert ist und das script .php als Endung hat, wird das script ja immer als php erkannt. nimm das mal raus und sag uns was dann kommt.. nämlich wenn dir anderen browser nicht wissen, dass das ein bild ist kommt sowas raus.
      In manchen Sachen ist der IE ja ein bisschen gütiger

      Der Server ist richtig konfiguriert, wenn ich die Datei als PHP Datei mache, dann passiert das gleiche, nur wenn ein User eine PHP Datei als Bild aufruft, dann sieht das komisch aus. Ich kann dem Server ja sagen, dass er eine Datei so behandeln soll, auch wenn sie eine ganz andere Endung hat.

      1. wenn du aber de server sagst er soll ein bild wie eine php-datei sehen, dann gibt er nur den inhalt der datei aus (also die Zeichen) und nicht das Bild in sich.. eine evtl. header ist ihm dann scheiß egal ;)

        1. wenn du aber de server sagst er soll ein bild wie eine php-datei sehen, dann gibt er nur den inhalt der datei aus (also die Zeichen) und nicht das Bild in sich.. eine evtl. header ist ihm dann scheiß egal ;)

          hallo,

          das stimmt nicht, ich hab den Fehler gefunden, ich hab Content-type= image/jpeg, es muss aber Content-type: image/jpeg sein.

          Nun funktioniert alles, das Bild wird dargestellt, obwohl die Datei .jpg heißt und wie PHP vom Server aus interpretiert wird.

  2. Hi!

    sieht die PHP Datei aus (bild.jpg jeißt sie):

    <?php
    header("content-type="image/jpeg"");

    die " brauchst Du AFAIK nicht unbedingt. Webserver verwenden die normalerweise auch nicht (AFAIK).

    $new_image = @imagecreatefromjpeg("bild.jpg");

    // Dann werden noch Texte reingeschrieben

    aber kein echo oder sowas, ja?

    imagejpeg($new_image,"",80);
    ?>

    Wie gesagt, es funktioniert im IE, bei anderen Browsern kommt der Zeichnmüll. Wie kann ich erreichen, dass das Bild auch bei anderen Browsern gezeigt wird? Stimmt der Header nicht? Oder muss ich noch was in die htaccess schreiben?

    Hast Du Dir mal die HTTP-Header die tatsächlich gesendet werden angesehen?
    Bei Firefox kannst Du das echt einfach mit der "Live HTTP Header" Extension. Dann am besten mit den Headern eines "echten" Bildes vergleichen.

    Kann es sein dass Du vor <?php oder nach ?> irgendwas ausgibst, vielleicht hast Du nur ein Leerzeichen oder eine Leerzeile davor? Vielleicht auch eine Leerzeile/Leerzeichen am Anfang oder am Ende einer Datei die Du per include einbindest?

    Grüße
    Andreas

    --
    SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
    1. Hi!

      sieht die PHP Datei aus (bild.jpg jeißt sie):

      <?php
      header("content-type="image/jpeg"");
      die " brauchst Du AFAIK nicht unbedingt. Webserver verwenden die normalerweise auch nicht (AFAIK).

      AFAIK ???

      $new_image = @imagecreatefromjpeg("bild.jpg");

      // Dann werden noch Texte reingeschrieben
      aber kein echo oder sowas, ja?

      imagejpeg($new_image,"",80);
      ?>

      Wie gesagt, es funktioniert im IE, bei anderen Browsern kommt der Zeichnmüll. Wie kann ich erreichen, dass das Bild auch bei anderen Browsern gezeigt wird? Stimmt der Header nicht? Oder muss ich noch was in die htaccess schreiben?
      Hast Du Dir mal die HTTP-Header die tatsächlich gesendet werden angesehen?

      Firefox sagt mir, dass das Dokument vom Typ text/html ist, wenn ich ein Bild aufmache, dann zeigt Firefox mir genau den Typ an, den ich in der PHP setze image/jpeg!

      Bei Firefox kannst Du das echt einfach mit der "Live HTTP Header" Extension. Dann am besten mit den Headern eines "echten" Bildes vergleichen.

      Kann es sein dass Du vor <?php oder nach ?> irgendwas ausgibst, vielleicht hast Du nur ein Leerzeichen oder eine Leerzeile davor? Vielleicht auch eine Leerzeile/Leerzeichen am Anfang oder am Ende einer Datei die Du per include einbindest?

      Es ist nichts drin, kein Leerzeichnen, Leerzeile oder sonst eine Ausgabe

      Grüße
      Andreas

      1. AFAIK = As far as i know -> so weit ich weiß

        Wenn dir Firefox sagt, dass das Dokument vom Typ text/html ist, dann interpretiewrt er das auch so.. da braucht man keine Kugel um vorher sagen zu können dass nur die Zeichen angezeigt werden. Also wird nicht richtig erkannt dass es sich um ein Bild handelt

        1. Hello,

          AFAIK = As far as i know -> so weit ich weiß

          Wenn dir Firefox sagt, dass das Dokument vom Typ text/html ist, dann interpretiewrt er das auch so.. da braucht man keine Kugel um vorher sagen zu können dass nur die Zeichen angezeigt werden. Also wird nicht richtig erkannt dass es sich um ein Bild handelt

          Ist bei dem gesendeten Header ja auch kein Wunder.
          Siehe mein Posting oben.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
  3. Hello,

    <?php
    header("content-type="image/jpeg"");

    "Content-type: image/jpeg";

    versuch es mal so. Das sollte klappen.

    Un dann würde mich bitte noch die Geschichte mit ForceType interessieren. Wo hast Du das wie festgelegt? Das würd ich nämlich gerne in meine Sammlung aufnehmen ;-)

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau