2016-07-29 4 views
2

У меня есть строковое изображение (png), которое я могу преобразовать в источник изображения с imagecreatefromstring(). Я знаю, что могу сжать его imagepng(), но я хотел бы пойти дальше, используя Optipng. Optipng возьмите файл в качестве входа.Используйте внешнюю программу в PHP на изображении в памяти

Так как я могу использовать Optipng или любой другой инструмент командной строки в PHP на изображении в памяти? Запись на диск сначала не является параметром.

+1

только с общей памятью, но это должно быть поддержано обеими сторонами (т.е. без соответствующих методов, два процесса могут не разделять их память.). Вы можете google для «общей памяти», чтобы узнать больше об этом. –

ответ

1

Вы должны сохранить его в какое-то временное место, выполнить требуемую операцию и при необходимости прочитать его в строке. Код ниже позволяет сохранять данные на временный файл:

$tmp = tempnam(sys_get_temp_dir(), 'tmp_img') . '.png'; 
    file_put_contents($tmp, $data); 

    $command = "optipng -o7 ${tmp}>/dev/null; echo $?"; 
    $retCode = shell_exec($command); 
    if ($retCode == 0) { 
     $data = file_get_contents($tmp); 
    } else { 
     die("error"); 
    } 
+1

Он прямо сказал, что «писать на диск сначала не вариант» ... –