Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP GD: How to get imagedata as binary string?

Tags:

php

zip

gd

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?

like image 768
Cambiata Avatar asked Jul 30 '09 14:07

Cambiata


2 Answers

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); 
like image 153
spoulson Avatar answered Sep 18 '22 13:09

spoulson


// ob_clean(); // optional ob_start(); imagepng($imagedata); $image = ob_get_clean(); 
like image 29
Stefan Brinkmann Avatar answered Sep 20 '22 13:09

Stefan Brinkmann