PHP GD: How to get imagedata as binary string?

gd, php, zip

Solution

One way is to tell GD to output the image, then use PHP buffering to capture it to a string:

$imagedata = imagecreatefrompng($imagefile);
ob_start();
imagepng($imagedata);
$stringdata = ob_get_contents(); // read from buffer
ob_end_clean(); // delete buffer
$zdata = gzdeflate($stringdata);

Problem

I'm using a solution for assembling image files to a zip and streaming it to browser/Flex application. (ZipStream by Paul Duncan, http://pablotron.org/software/zipstream-php/). Just loading the image files and compressing them works fine. Here's the core for compressing a file: ``` // Reading the file and converting to string data $stringdata = file_get_contents($imagefile); // Compressing the string data $zdata = gzdeflate($stringdata ); ``` My problem is that I want to process the image using GD before compressing it. Therefore I need a solution for converting the image data (imagecreatefrompng) to string data format: ``` // 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 ); ``` Any clues?

Original source