2009-07-30 20 views
18

Sto utilizzando una soluzione per assemblare file di immagine su un file zip e trasferirli su browser/applicazione Flex. (ZipStream di Paul Duncan, http://pablotron.org/software/zipstream-php/).PHP GD: Come ottenere imagedata come stringa binaria?

Basta caricare i file di immagine e comprimerli funziona bene. Ecco il nucleo per la compressione di un file:

// Reading the file and converting to string data 
$stringdata = file_get_contents($imagefile); 

// Compressing the string data 
$zdata = gzdeflate($stringdata); 

Il mio problema è che voglio elaborare l'immagine utilizzando GD prima di comprimerlo. Quindi ho bisogno di una soluzione per convertire i dati di immagine (imagecreatefrompng) al formato dei dati stringa:

// Reading the file as GD image data 
$imagedata = imagecreatefrompng($imagefile); 
// Do some GD processing: Adding watermarks etc. No problem here... 

// HOW TO DO THIS??? 
// convert the $imagedata to $stringdata - PROBLEM! 

// Compressing the string data 
$zdata = gzdeflate($stringdata);

Degli indizi?

risposta

39

Un modo è quello di dire GD per emettere l'immagine, quindi utilizzare PHP buffer per catturare una stringa:

$imagedata = imagecreatefrompng($imagefile); 
ob_start(); 
imagepng($imagedata); 
$stringdata = ob_get_contents(); // read from buffer 
ob_end_clean(); // delete buffer 
$zdata = gzdeflate($stringdata); 
8
// ob_clean(); // optional 
ob_start(); 
imagepng($imagedata); 
$image = ob_get_clean(); 
+0

ob_get_clean() esegue essenzialmente due ob_get_contents() e ob_end_clean(), così questa soluzione è leggermente più elegante di quella sopra accettata. –

Problemi correlati