PHP GD: Come ottenere imagedata come stringa binaria?
Domanda
Sto usando una soluzione per assemblare file di immagine in una zip e trasmetterla in streaming su browser / applicazione Flex. (ZipStream di Paul Duncan, http://pablotron.org/software/zipstream-php/ ).
Il semplice caricamento dei file di immagine e la loro compressione funziona correttamente. Ecco il nucleo per comprimere 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 usando GD prima di comprimerla. Pertanto ho bisogno di una soluzione per convertire i dati immagine (imagecreatefrompng) nel formato 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 );
Qualche indizio?
Soluzione
Un modo è dire a GD di produrre l'immagine, quindi usare il buffering PHP per catturarlo in una stringa:
$imagedata = imagecreatefrompng($imagefile);
ob_start();
imagepng($imagedata);
$stringdata = ob_get_contents(); // read from buffer
ob_end_clean(); // delete buffer
$zdata = gzdeflate($stringdata);
Altri suggerimenti
// ob_clean(); // optional
ob_start();
imagepng($imagedata);
$image = ob_get_clean();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow