PHP 如何在 Imagemagick 命令中使用远程文件

How to use Remote File within Imagemagick Command in PHP

我目前在共享托管网站空间上使用 Imagemagick。 Imagemagick 也安装在这个网站空间上。它的 versionString 是 ImageMagick 6.8.9-9 Q16 x86_64 2018-06-26,它的 versionNumber 是 1673

现在我的问题: 我想将 REMOTE FILE 例如 https://www.google.com/favicon.ico 转换为 png 图像以便以后使用。为此,我目前正在使用此 PHP 脚本:

<?php
   exec( "/usr/bin/convert convert https://www.google.com/favicon.ico favicon.png" );
?>

但是此命令不会在同一文件夹中创建文件 favicon.png。但是如果我下载 favicon.ico 文件并将其存储在服务器上,我可以使用这个命令并且它完美地工作:

<?php
   exec( "/usr/bin/convert convert favicon.ico favicon.png" );
?>

那么如何在 imagemagick 中通过 convert 命令使用远程文件而不将文件存储在我的服务器上?我还尝试使用 $Imagick->getImageBlob(); -> https://secure.php.net/manual/de/imagick.getimageblob.php 创建一个新的图像对象并将输出插入到 exec();这样的命令

<?php
exec( "/usr/bin/convert convert " . $Imagick->getImageBlob() . "favicon.png" );
?> 

在 PHP 中。但它只显示了这个命令可能是一个攻击的错误。

希望您能帮我解决这个问题,在此先感谢您!

PS: I can not edit anything in the Imagemagick settings or update the class/package either.

wget -O- https://www.google.com/favicon.ico | convert  ico:- favicon.jpg

说明: 您应该使用 "wget" 下载文件并输出到标准输出,然后将其通过管道传输到 "convert"。 "ico:-" - 这意味着输入文件类型 "image/ico" 并从标准输入中获取它。

或者直接使用:

 $imagick = new Imagick();
 $imagick->readImageBlob("https://www.google.com/favicon.ico");
 $image->writeImage('favicon.png');