2009-08-18 3 views
2

J'ai une base de données qui stocke des images dans un champ BLOB MySQL. Je configure un script qui sélectionne et affiche les images en fonction d'un identifiant dans l'URL, et je l'ai également fait si vous ajoutez? Resize = 800x600, il redimensionnerait l'image (dans ce cas, à 800x600).GD obtient l'image de la chaîne binaire

L'hôte que j'utilise n'a pas installé Imagemagick et ne me laisse pas le faire moi-même, j'ai donc besoin d'utiliser la bibliothèque GD de PHP pour redimensionner l'image.
Mais je n'ai pas encore trouvé de fonction comme readImageBlob() d'Imagick, donc je ne peux pas éditer la chaîne binaire que je reçois de la base de données sans d'abord créer un fichier temporaire, l'éditer, en récupérer la chaîne binaire le navigateur, puis en le supprimant (ce qui est trop long, d'autant plus que cela va générer quelques milliers de hits en production).

Donc, ma question est, est-il un moyen de répliquer readImageBlob avec GD de PHP sans passer par la solution de fichier temporaire?

Répondre

5

imagecreatefromstring() devrait faire l'affaire. Je pense que l'exemple de fonction dans le manuel est presque exactement ce dont vous avez besoin:

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

$data est votre chaîne de données binaires à partir de la base de données.

Questions connexes