Fragezeichen: Bilder aus einer DB aufrufen

Liebes Forum

Ich habe mehrere Bilder in einer Tabelle einer MySQL-DB abgespeichert (Tabelle album_bilder, Feld bild Format BLOB).

Wie kann ich nun mit einer Abfrage diese Bilder als Bilder und nicht als Binär-Code (oder wie man dem auch sagt) anzeigen lassen? Folgende Abfrage zeigt nämlich nur das Binärzeugs an (also: GIF89a((à   ¸}þþ Ìþ ªå*²äBÓü ¹ù Nm.......):

$zeiger=mysql_query("select bild from album_bilder");
while($ergebnis=mysql_fetch_array($zeiger))
{
print $ergebnis['bild'];
}

Für Eure Antworten, besten Dank im Voraus!

Fragezeichen

  1. Hallo!

    Wie kann ich nun mit einer Abfrage diese Bilder als Bilder und nicht als Binär-Code (oder wie man dem auch sagt) anzeigen lassen? Folgende Abfrage zeigt nämlich nur das Binärzeugs an (also: GIF89a((à   ¸}þþ Ìþ ªå*²äBÓü ¹ù Nm.......):

    Ja, normalerweise wird das was PHP ausgibt als Content-Type html/text oder plain/text übertragen. Woher soll der Browser wissen dass er da jetzt ein Bild rendern soll?

    Außerdem kannst Du nicht mehrere Bilder auf einmal ausgeben. Du kannst auf diese Weise nur ein einziges Bild ausgeben, kein HMTL drum herum nur das Bild.

    Das heißt Du musst das Script in HTML wie folgt referenzieren:

    <img src="/path/to/script.php?bild_id=123">

    in dem Script darfst Du wie gesagt nur das eine Bild ausgeben, sonst nichts, kein HMTL, kein Leerzeichen, keine Leerzeile...

    Und dann musst Du noch den Webserver veranlassen den korrekten Content-Type zu setzen, der unterscheidet sich auch je nach Bild-Typ, image/gif, image/jpeg, image/png...

    Folgende Links könnten Dir helfen:

    http://de3.php.net/manual/de/function.header.php#AEN31605
    (Du brauchst nur den Content-Type, danach das Bild ausgeben und danach nichts mehr ausgeben.)

    http://www.dclp-faq.de/q/q-mysql-blob.html
    Da findest Du eine Diskussion ob es sinnvoll ist Bilder in einer DB zu speichern, und einen Link auf ein ausführliches Tutorial wie man jetzt Bilder in einer DB verwaltet und ausgibt.

    Ich persönlich sehe keinen Sinn darin Bilder in einer DB zu speichern.

    Grüße
    Andreas

    1. Hallo Andreas!

      Danke für deinen Input. Ich denke, es ist wirklich nicht so schlau Bilder in einer Datenbank abzulegen. Weisst Du evtl., wo ich ein Skript finde, mit welchem ich Bilder hochladen kann (inkl. automatischer Erstellung von Thumbs....d.h. kleinere Version des Bildes) und das nicht zu kompliziert ist, anzupassen?

      Fragezeichen

      1. Hi!

        Danke für deinen Input. Ich denke, es ist wirklich nicht so schlau Bilder in einer Datenbank abzulegen. Weisst Du evtl., wo ich ein Skript finde, mit welchem ich Bilder hochladen kann (inkl. automatischer Erstellung von Thumbs....d.h. kleinere Version des Bildes) und das nicht zu kompliziert ist, anzupassen?

        Natürlich:

        Upload-Script:
        http://www.dclp-faq.de/q/q-formular-upload-php4.html
        (beachte den Tipp mit "getimagesize()", damit solltest Du unbedingt prüfen ob es sich um Bilder handelt)

        Bilder verkleinern:
        http://www.dclp-faq.de/q/q-grafik-verkleinern.html
        Entweder eine der verlinkten KLassen verwenden, oder selber basteln mit
        http://de3.php.net/manual/de/function.imagecopyresampled.php
        (siehe Beispiele in den Kommentaren unten!)

        Grüße
        Andreas

    2. Hello,

      und zum Einspechern Deiner Bilder in die MySQL-DB musst Du daran denken, die Daten mit mysql_escpae_string() zu maskieren, damit sie nicht zerstückelt werden und Dir auch nicht die DB zerlegen.

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

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen