Merlin: Bildausgabe funk nicht

hallo

ich versuche "on the fly" eine grafik zu jedem Datensatz aus der db zu generieren. Wenn ich das folgende script direkt aufrufe funktioniert es problemlos.

$image = imagecreate(130,10);
$farbe_body = imagecolorallocate($image,243,243,243);
$farbe_b = imagecolorallocate($image,10,36,106);
imagefilledrectangle($image,0,0,130,10,$farbe_b);
header("Content-Type: image/png");
return imagejpeg($image);

sobald ich dieses script in eine funktion/klasse einbinde, bekomme ich einen ASCII code zurück.

was mache ich falsch?

danke im voraus

  1. Hallo

    header("Content-Type: image/png");
    return imagejpeg($image);

    sobald ich dieses script in eine funktion/klasse einbinde, bekomme ich einen ASCII code zurück.

    Kann es sein, dass zuvor schon ein header mit contetn-type gesendet wurde? Bist Du sicher, dass diese Anweisung der erste header befehl ist?

    HTH
    kaepten

    1. ola

      du hast recht ich bekomme die fehlermeldung:

      "Warning: Cannot modify header information - headers already sent by"

      aber ich verstehe es trotzdem nicht da ich keine header infos angebe. kann ich denn irgendwie löschen und ersetzen?

      gruss

      1. Hallo

        "Warning: Cannot modify header information - headers already sent by"

        aber ich verstehe es trotzdem nicht da ich keine header infos angebe. kann ich denn irgendwie löschen und ersetzen?

        header("Content-Type: image/png");

        Ist aber doch ein Header. Ich glaube da gerät etwas durcheinander.

        Wenn das Bild mit einer HTML Seite geliefert werden soll, dann solltest Du wohl das Bild temporär speichern und im HTML verlinken. Ich glaube (ich kenn ja den genauen Code nicht) Was Du tun willst ist den Byte-Stream an den Browser senden. Das geht schon, aber nur für sich selbst - nicht eingebettet im HTML.

        HTH
        kaepten

        PS: Für fundiertere Antworten wäre es nötig, dass Du den gesammten Context des Codes auch postest.

        1. Ich seh grad, dass Tom das natürlich richtig beschreibt: Die Grafik muss überhaupt nicht lokal gespeichert werden...

          kaepten

  2. Hello,

    sobald ich dieses script in eine funktion/klasse einbinde, bekomme ich einen ASCII code zurück.

    versuchst Du vielleicht, die Grafik zusammen mit dem HTML-Dokument auszugeben?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Ja das versuche ich!

      1. Hello,

        Ja das versuche ich!

        Dann beschäftige Dich nochmal mit HTML und der Client-Server-Technik.

        In einem "normalen" HTML-Dokument sind z.B. einige Hyperreferenzen (Load-After-Confirmation) und einige Resource-URLs (Load-Without-Confirmation) enhalten.

        Diese Referenzen zeigen dann zweckmäßigerweise auf ein eigenes Script, das auf irgend einem Wege Parameter über die zu beschaffenden Ressourcen übergeben bekommt:

        <a href="getimage.php?pic=2468">Bild anzeigen</a>

        oder eben

        <img src="getimage.php?pic=2468" alt="Bild anzeigen" title="Testbild">

        Im Script getimage.php wird dann der Request durchgeführt.
        Wenn man grundsätzlich mit Sessions arbeitet, kann man die eigentliche Bildreferenz unter der Nummer (pic=...) in der Session ablegen. Die sollte man dann hochzählen. Wenn das Script das Bild dann besorgt hat, wird der Eintrag aus der Session entfernt. Die Bilder können dann nur jeweils passend zur zugehörigen Seite während der Session angezeigt werden.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Die Idee ist das ich daten die aus der Datenbank grafisch darstellen kann. Und diese grafik soll sich dynamisch an die werte aus der Datenbank anpassen.

          Und wenn ich das richtig verstehe kann bei deinem Beispiel nur fixe bilddaten vom server laden keine dynamischen.

          <a href="getimage.php?pic=2468">Bild anzeigen</a>

          oder eben

          <img src="getimage.php?pic=2468" alt="Bild anzeigen" title="Testbild">

          oder verstehe ich das falsch

          1. Hallo,

            Und wenn ich das richtig verstehe kann bei deinem Beispiel nur fixe bilddaten vom server laden keine dynamischen.

            <a href="getimage.php?pic=2468">Bild anzeigen</a>

            oder eben

            <img src="getimage.php?pic=2468" alt="Bild anzeigen" title="Testbild">

            oder verstehe ich das falsch

            Ich nehme an, das tust du. Tom versucht dir klar zu machen, auf welche Weise du deine Bilder (auch und gerade die mit PHP erstellten) einbinden musst. Die kannst du natürlich bei jedem Aufruf je nach Parameter neu (dynamisch...) generieren.

            Grüße aus Barsinghausen,
            Fabian

          2. Hello,

            Die Idee ist das ich daten die aus der Datenbank grafisch darstellen kann. Und diese grafik soll sich dynamisch an die werte aus der Datenbank anpassen.

            Und wenn ich das richtig verstehe kann bei deinem Beispiel nur fixe bilddaten vom server laden keine dynamischen.

            <a href="getimage.php?pic=2468">Bild anzeigen</a>

            oder eben

            <img src="getimage.php?pic=2468" alt="Bild anzeigen" title="Testbild">

            oder verstehe ich das falsch

            Ja, ganz!

            Was das Script "getimage.php?pic=58913547" nun generiert und ausliefert, ist doch egal. Es darf aber nur eine Bildquelle mit dem passenden Header vorveg und nichts anderes ausliefern. Der Browser akzeptiert in einem <img ...>-Tag HOFFENLICH nur Bilder.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen