Imagick-无法从URL读取图像文件。

sup*_*ero 2 php imagick

我正在使用此代码段读取不同网站上的图像:

$image = new Imagick('http://lp.hm.com/hmprod?set=key[source],value[/model/2012/P01 05156 06204 80 1175 4.jpg]&set=key[rotate],value[]&set=key[width],value[]&set=key[height],value[]&set=key[x],value[]&set=key[y],value[]&set=key[type],value[STILL_LIFE_FRONT]&call=url[file:/product/large]');
Run Code Online (Sandbox Code Playgroud)

但是有时候,我会收到这样的错误(大约20%的时间):

ImagickException

Unable to read the file: http://lp.hm.com/hmprod?set=key[source],value[/model/2012/P01 05156 06204 80 1175 4.jpg]&set=key[rotate],value[]&set=key[width],value[]&set=key[height],value[]&set=key[x],value[]&set=key[y],value[]&set=key[type],value[STILL_LIFE_FRONT]&call=url[file:/product/large]

Imagick->__construct()
Run Code Online (Sandbox Code Playgroud)

该错误似乎在整个域中都是一致的,但有时同一域中的图像与图像之间会有所不同。

问题

为什么这是个问题?
我们该如何解决?
有替代解决方案吗?

Uda*_*ale 7

步骤1:获取网址

$url = 'http://blablabla.com/blabla.jpeg';
Run Code Online (Sandbox Code Playgroud)

步骤2:将博客内容保存到变量

$image = file_get_contents($url);
Run Code Online (Sandbox Code Playgroud)

步骤3:建立Imagick物件

$img = new Imagick();
Run Code Online (Sandbox Code Playgroud)

步骤4:指示imagick对象读取图像的Blob内容

$img -> readImageBlob($image);
Run Code Online (Sandbox Code Playgroud)

步骤5:在图片上保存(或执行操作)

$img -> writeImage('/var/www/html/uploads/img.jpg');
Run Code Online (Sandbox Code Playgroud)

步骤6:销毁imagick实例

$img -> destroy();
Run Code Online (Sandbox Code Playgroud)