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
с актуальным содержанием.
Это позволит избежать бесполезной траты ввода-вывода при преобразовании файла из одного формата в png, а затем оптимизировать его
Что будет новым shell_exec()
командовать в этой ситуации
Я не эксперт по PHP, но я считаю, что вы ищете двусторонний канал (запись и чтение) для другого процесса, чтобы вы могли записать данные в его STDIN и читать данные из его стандартный вывод. Итак, я думаю, что это означает, что вам нужно 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);
}
Других решений пока нет …