2011-12-16 2 views
2

Я пытаюсь получить исходные данные, созданные imagejpeg() в PHP. Мне нужно кэшировать содержимое, так как функция, генерирующая изображение, выглядит медленной. Я знаю, что могу предоставить второй параметр, но это не то, что я хочу.получить содержимое объекта изображения в PHP

Thx

ответ

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 
0

Я просто удар по Google дал мне это:

ob_start(); 
ImageJPEG($img); 
$data = ob_get_contents(); 
ob_end_clean(); 
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 `отключит буферизацию и сделать все, что вернуться к нормальной

Если вы используете версию PHP выше 5.3, вы можете добавить t его функция обертки в вашу библиотеку, она получит обратный вызов и вернет данные, которые обычно будут распечатаны.

function get_output ($callback) { 
    ;  ob_start (); 
    ;  $callback (); 
    return ob_get_clean(); // get data and turn off buffering 
} 

... 

$image_data = get_output (
    function() {imagejpeg ($img);} 
); 
Смежные вопросы