0

Pngquant には、php の次の例があります。

// '-' makes it use stdout, required to save to $compressed_png_content variable
    // '<' makes it read from the given file path
    // escapeshellarg() makes this safe to use with any path
    $compressed_png_content = shell_exec("pngquant --quality=$min_quality-$max_quality - < ".escapeshellarg(    $path_to_png_file));

$path_of_file実際の内容に置き換えたい。

これにより、ファイルを 1 つの形式から png に変換してから最適化する際の無駄な I/O を回避できます。

shell_exec()その状況での新しいコマンドは何でしょうか

4

1 に答える 1

0

私は PHP の専門家ではありませんが、データをstdinに書き込み、 stdoutからデータを読み取ることができるように、別のプロセスへの双方向パイプ (書き込みと読み取り) を探していると思います。つまり、ここproc_open()に記載されているものが必要だということだと思います。

次のようになります (未テスト)。

$cmd = 'pngquant --quality ... -';

$spec = array(array("pipe", "r"), array("pipe", "w"), array("pipe", "w"));

$process = proc_open($cmd, $spec, $pipes);

if (is_resource($process)) 
{

    // write your data to $pipes[0] so that "pngquant" gets it
    fclose($pipes[0]);

    $result=stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    proc_close($process);
}
于 2016-06-16T15:05:16.550 に答える