我有一个字符串图像(png),我可以使用imagecreatefromstring()
将其转换为图像资源。
我知道我可以用imagepng()
压缩它,但我想进一步使用Optipng。
Optipng将文件作为输入。
那么我如何在内存映像中使用Optipng或PHP中的任何其他命令行工具?首先写入磁盘图像不是一种选择。
答案 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");
}