我正在使用一个解决方案,将图像文件组装成zip文件,并将其流式传输到browser/Flex应用程序。(保罗·邓肯的ZipStream,http://pablotron.org/software/zipstream-php/)。
只需加载图像文件并对其进行压缩即可。以下是压缩文件的核心:
// Reading the file and converting to string data
$stringdata = file_get_contents($imagefile);
// Compressing the string data
$zdata = gzdeflate($stringdata );
我的问题是,我想在压缩之前使用GD处理图像。因此,我需要一个将图像数据(imagecreatefrompng)转换为字符串数据格式的解决方案:
// 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 );
有什么线索吗?
发布于 2009-07-30 14:22:07
一种方法是告诉GD输出图像,然后使用PHP缓冲将其捕获为字符串:
$imagedata = imagecreatefrompng($imagefile);
ob_start();
imagepng($imagedata);
$stringdata = ob_get_contents(); // read from buffer
ob_end_clean(); // delete buffer
$zdata = gzdeflate($stringdata);
发布于 2013-04-10 02:20:51
// ob_clean(); // optional
ob_start();
imagepng($imagedata);
$image = ob_get_clean();
发布于 2019-12-30 10:36:38
当不需要输出缓冲区时,可以使用php://内存流。https://www.php.net/manual/en/wrappers.php.php
$imagedata = imagecreatefrompng($imagefile);
// processing
$stream = fopen('php://memory','r+');
imagepng($imagedata,$stream);
rewind($stream);
$stringdata = stream_get_contents($stream);
// Compressing the string data
$zdata = gzdeflate($stringdata );
https://stackoverflow.com/questions/1206884
复制相似问题