在内存映像中使用PHP中的外部程序

时间:2016-07-29 08:49:07

标签: php external in-memory

我有一个字符串图像(png),我可以使用imagecreatefromstring()将其转换为图像资源。 我知道我可以用imagepng()压缩它,但我想进一步使用Optipng。 Optipng将文件作为输入。

那么我如何在内存映像中使用Optipng或PHP中的任何其他命令行工具?首先写入磁盘图像不是一种选择。

1 个答案:

答案 0 :(得分: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");
   }