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

时间:2018-07-27 21:01:50

标签: php imagemagick exec imagick

我目前正在共享托管Webspace上使用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创建一个新的Image Object,并将输出插入到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.

1 个答案:

答案 0 :(得分:0)

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');