gpt4 book ai didi

PHP:获取optipng的输出

转载 作者:可可西里 更新时间:2023-11-01 12:59:36 24 4
gpt4 key购买 nike

我正在使用 jpegoptim 和 optipng 来优化来自浏览器中调用的 php 脚本的图像。我这样做:

$s = exec('/myoptimizer/jpegoptim -m60 -o --strip-all /httpd/images/myimage.jpg');
print $s;

这工作正常并输出:

/httpd/images/myimage.jpg 600x90 24bit P JFIF [OK] 14572 --> 14542 bytes (0.21%), optimized. 

现在与 optipng 相同:

$s = exec('/myoptimizer/optipng -o7 -preserve -strip all /httpd/images/myimage.png /httpd/images/myimage.png', $aOutput, $ret);

var_dump($s);
var_dump($a);
var_dump($ret);

But:
$s is empty.
$a is empty array.
$ret is 0.

在控制台上执行相同的命令,我得到:

** Processing: /httpd/images/myimage.png
60x18 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 2235 bytes
Input file size = 2292 bytes

Trying:
zc = 9 zm = 9 zs = 0 f = 5 IDAT size = 2235
zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 2235
zc = 8 zm = 9 zs = 0 f = 5 IDAT size = 2235
zc = 8 zm = 8 zs = 0 f = 5 IDAT size = 2235

/httpd/images/myimage.png is already optimized.

和:

$s = exec('/myoptimizer/optipng -h', $aOutput, $ret);
print $s;

有效。

如何在 PHP 中获取输出?我也尝试了 shell_exec、passthru 和 system,但是:根本没有输出。

最佳答案

exec() 方法的第二个参数捕获执行命令的标准输出。在您的情况下,optipng 不会将其结果输出到标准输出,而是输出到标准错误。您可以通过在执行程序的末尾添加 2>&1 将标准错误消息重定向到标准输出,在这种情况下,您的代码将如下所示:

<?php
$imagePath = '/httpd/images/myimage.png';
$comand = '/myoptimizer/optipng -o7 -preserve -strip all';

exec("$command $imagePath 2>&1", $outout);

var_dump($output);

关于PHP:获取optipng的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49196336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com