Image aus db binär (blob) auslesen

Ich habe eine Frage. Ich speichere Bilder in meiner mysql-db binär in einem Blog-Feld. Nun würde ich diese gerne wieder auslesen und via HTML/PHP anzeigen lassen.

Die einzige Lösung welche ich bisher gefunden habe ist Folgende:
________________________________________________________________
$res=mysql_query(„SELECT * FROM files WHERE status=‚A‘“);

$data = @MYSQL_RESULT($res,0,„source“);
$type = @MYSQL_RESULT($res,0,„filetype“);

Header( „Content-type: $type“);
echo $data;
________________________________________________________________

Ich habe die Bilder vorher in ein Verzeichnis auf meinem Server hochgeladen und als ausgegeben. Dabei konnte ich natürlich auch die Dimensionen des Bildes bestimmen.

Wie kann ich das in der neuen Binärdatenspeicherform realisieren?

Ich habe eine Frage. Ich speichere Bilder in meiner mysql-db
binär in einem Blog-Feld.

warum tust du das? dafuer ist doch eine datenbank gar nicht gut…

Ich habe die Bilder vorher in ein Verzeichnis auf meinem
Server hochgeladen und als ausgegeben. Dabei
konnte ich natürlich auch die Dimensionen des Bildes
bestimmen.

Wie kann ich das in der neuen Binärdatenspeicherform
realisieren?

http://php.net/getimagesizefromstring

Ich habe eine Frage. Ich speichere Bilder in meiner mysql-db
binär in einem Blog-Feld.

warum tust du das? dafuer ist doch eine datenbank gar nicht
gut…

Doch… genau dafür sind BLOB-Felder gedacht. Und es gibt sehr gute Argumente dafür, z.B. referentielle Integrität, Backup-Verhalten und nicht zuletzt Logik - das Bild gehört eben zum Datensatz.

Ich habe die Bilder vorher in ein Verzeichnis auf meinem
Server hochgeladen und als ausgegeben. Dabei
konnte ich natürlich auch die Dimensionen des Bildes
bestimmen.

Wie kann ich das in der neuen Binärdatenspeicherform
realisieren?

http://php.net/getimagesizefromstring

Ist nicht SO schwer. Grundsätzliches Vorgehen (ungefähr so… basierend auf Deinem Code, mit Beispielgrößen und natürlich nicht getestet):

$res=mysql_query(„SELECT * FROM files WHERE status=‚A‘“);

$data = @MYSQL_RESULT($res,0,„source“);
$type = @MYSQL_RESULT($res,0,„filetype“);

$img = imagecreatefromstring( $data );
$newimg = imagecreatetruecolor( 640 , 480 );

imagecopyresampled( $img, $newimg , 0 , 0 , 0 , 0 , 640 , 480 , 1024 , 768 );

Header( „Content-type: $type“);
imagejpg( $newimg , null );

Hier sind natürlich noch „Macken“ drin, z.B. musst Du in Abhängigkeit vom „Content-Type“ imagejpg, imagepng oder imagegif benutzen, die Größenangaben sind natürlich nicht „real“ etc. aber das Prinzip wird hoffentlich deutlich.

Danke Dir Dampfhans! Geb Dir natürlich völlig recht!
Worin unterscheidet sich auch eine Datei von einem String?
Genau dafür ist es da!

Ich habe eine Frage. Ich speichere Bilder in meiner mysql-db
binär in einem Blog-Feld.

warum tust du das? dafuer ist doch eine datenbank gar nicht
gut…

Doch… genau dafür sind BLOB-Felder gedacht. Und es gibt sehr
gute Argumente dafür, z.B. referentielle Integrität,
Backup-Verhalten und nicht zuletzt Logik - das Bild gehört
eben zum Datensatz.

http://www.php-faq.de/q-db-blob.html
scheint uneinheitlich bewertet zu werden.