将文件从命令行传递到 PHP stdin
Passing a file from command line to PHP stdin
我在 PHP 中使用名为 Intervention 的图像处理库。这是一个很棒的库,但并不完全具备我需要的所有功能,特别是无损压缩。有命令行工具可以执行此操作,但我想即时进行处理并将数据传递给浏览器,而不是将数据写入文件系统。
我想将文件数据提取到一个文件中,然后直接提供给 PHP,但我对命令行不够熟悉,不知道如何 "pipe"数据到 PHP 或如何获取 PHP 以读取数据。也许是这样的:
use Intervention\Image\ImageManagerStatic as Image;
$data = exec('optipng image.png >tophp');
$image_data = fopen('php://stdin', 'r');
$img = Image::make($image_data);
//...do more stuff...
echo $img->response();
我知道这显然行不通,但是有什么方法可以完成我想做的事情吗?
对于任何能够将图像数据 return 输出到标准输出的命令行工具,您可以使用 shell_exec
捕获它。然后您可以将该数据传递给 Intervention。否则,您可以将数据保存到 tmp 文件,让 PHP 读取数据,然后删除文件。
我在 PHP 中使用名为 Intervention 的图像处理库。这是一个很棒的库,但并不完全具备我需要的所有功能,特别是无损压缩。有命令行工具可以执行此操作,但我想即时进行处理并将数据传递给浏览器,而不是将数据写入文件系统。
我想将文件数据提取到一个文件中,然后直接提供给 PHP,但我对命令行不够熟悉,不知道如何 "pipe"数据到 PHP 或如何获取 PHP 以读取数据。也许是这样的:
use Intervention\Image\ImageManagerStatic as Image;
$data = exec('optipng image.png >tophp');
$image_data = fopen('php://stdin', 'r');
$img = Image::make($image_data);
//...do more stuff...
echo $img->response();
我知道这显然行不通,但是有什么方法可以完成我想做的事情吗?
对于任何能够将图像数据 return 输出到标准输出的命令行工具,您可以使用 shell_exec
捕获它。然后您可以将该数据传递给 Intervention。否则,您可以将数据保存到 tmp 文件,让 PHP 读取数据,然后删除文件。