2009-08-18 7 views
2

Ich habe eine Datenbank, die Bilder in einem MySQL-BLOB-Feld speichert. Ich habe ein Skript eingerichtet, das die Bilder basierend auf einer ID in der URL auswählt und anzeigt, und ich habe es auch so gemacht, wenn Sie "resize = 800x600" anhängen, würde es die Größe des Bildes ändern (in diesem Fall auf 800x600).Haben GD Bild von binären Zeichenfolge

Der Host, den ich verwende, hat ImageMagick nicht installiert und lässt mich das nicht selbst machen, deshalb muss ich die GD-Bibliothek von PHP verwenden, um die Größe des Bildes zu ändern.
Aber ich habe noch eine Funktion wie Imagick readImageBlob() zu finden, so kann ich nicht die binäre Zeichenfolge bearbeiten, die ich von der Datenbank ohne zuerst eine temporäre Datei erstellen, bearbeiten, erhalten Sie die binäre Zeichenfolge aus, senden Sie es an der Browser, und dann löschen Sie es (das ist waaaay zu viele Schritte, zumal dies wird ein paar tausend Treffer, wenn es in Produktion geht).

Also meine Frage ist, gibt es eine Möglichkeit, readImageBlob mit PHP GD replizieren, ohne durch die temporäre Dateilösung gehen?

Antwort

5

imagecreatefromstring() sollte den Trick tun. Ich denke, die Funktion Beispiel im Handbuch fast genau das, was Sie brauchen:

$im = imagecreatefromstring($data); 
if ($im !== false) { 
    header('Content-Type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
} 
else { 
    echo 'An error occurred.'; 
} 

Wo $data Ihre binäre Datenfolge aus der Datenbank.