我正在尝试获取由PHP中的imagejpeg()创建的原始数据。我需要缓存内容,因为生成图像的函数有点慢。我知道我可以提供第二个参数,但这不是我想要的。
THX
答案 0 :(得分:4)
您可以使用Output Control Functions捕获通常由函数打印的原始数据。
在下面的示例中,我们会将imagejpeg
最初打印的数据存储在$image_data
中。
ob_start();
imagejpeg ($img);
$image_data = ob_get_contents();
ob_end_clean();
ob_start
将开始缓冲输出ob_get_contents
将获取当前缓冲区数据ob_end_clean
`将关闭输出缓冲并使一切恢复正常如果您使用的是比5.3更新的PHP版本,您可以将此包装函数添加到库中,它将进行回调并返回通常打印出来的数据。
function get_output ($callback) {
; ob_start ();
; $callback ();
return ob_get_clean (); // get data and turn off buffering
}
...
$image_data = get_output (
function () {imagejpeg ($img);}
);
答案 1 :(得分:2)
尝试使用像这样的输出缓冲区 - >
ob_start(); // start a new output buffer
imagejpeg( $newimage, NULL, 100 ); // generate the image
$ImageData = ob_get_contents(); // grab the buffer contents
ob_end_clean; // stop this output buffer
答案 2 :(得分:0)
我在Google上的简单命中就给了我这个:
ob_start();
ImageJPEG($img);
$data = ob_get_contents();
ob_end_clean();