2009-07-30 5 views
18

Ich verwende eine Lösung, um Bilddateien zu einer Zip-Datei zusammenzustellen und sie in die Browser/Flex-Anwendung zu streamen. (ZipStream von Paul Duncan, http://pablotron.org/software/zipstream-php/).PHP GD: Wie man Imagedaten als binäre Zeichenkette erhält?

Laden Sie einfach die Bilddateien und komprimieren sie funktioniert gut. Hier ist der Kern zum Komprimieren einer Datei:

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

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

Mein Problem ist, dass ich das Bild mit GD vor Komprimieren es verarbeiten möchten. Deshalb brauche ich eine Lösung, die die Bilddaten zum Umwandeln (imagecreatefrompng) auf String-Datenformat:

// 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);

Irgendwelche Hinweise?

Antwort

39

Eine Möglichkeit ist, GD für die Ausgabe des Bildes zu sagen, dann PHP Pufferung verwenden, um eine Zeichenkette zu erfassen:

$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() führt im wesentlichen die beiden ob_get_contents() und ob_end_clean(), so Diese Lösung ist etwas eleganter als die oben angenommene Antwort. –