Conversion ressource image vers string

La bibliothèque GD permet beaucoup de chose mais pas de sauvegarder une image en chaine de caractère. Ça peut pourtant être pratique pour sérialiser une image (les ressources ne sont pas sérialisables) ou encore ne pas avoir un créer un fichier sur le disque.

La solution est d’utiliser la bufferisation de la sortie standard de php pour récupérer la ressource sous forme de string :

ob_start();imagejpeg($imageBase);$string = ob_get_contents();ob_end_clean();

Un petit exemple de mise en situation : Créer une archive zip contenant des images issues d’une fusion de plusieurs images contenues dans un BLOB d’une base de données :

$zip = new ZipArchive();

$op = $zip->open('test.zip',ZipArchive::CREATE);

foreach($ids as $id){ ob_start(); $data  = $bd->getById($id); $imageBase  = $bd->generateImage($data); imagejpeg($imageBase);

$zip->addFromString($data->id.'.jpg',ob_get_contents()); ob_end_clean(); }$zip->close();

Il est ainsi possible de créer à la volée l’archive sans avoir à écrire les fichiers sur le disque. La consommation mémoire est en revanche plus élevée. A titre d’exemple , une archive avec 380 images d’environs 20Ko aura consommé 18Mo de mémoire.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *