Imagick将外部图像解释为HTML

时间:2015-06-17 01:43:12

标签: php imagemagick imagick

我遇到的问题是,当从特定的外部网站(并非所有网站)保存图像时,我会收到一个错误,其中图像被解释为html而不是另一种图像格式。

到目前为止,这个网站是我遇到过这个问题的唯一网站,但我肯定需要找到解决方案。

链接到图片 http://www.nycvelo.com/bike-of-the-week-nicks-geekhouse-commuter/

要测试的图片: http://www.nycvelo.com/wp-content/uploads/2013/10/Nicks-Geekhouse-7.jpg

第86行的代码:

$imageURL = 'http://www.nycvelo.com/wp-content/uploads/2013/10/Nicks-Geekhouse-7.jpg';

// Get image file from imagick
$ImagickImage = new Imagick($imageURL);

错误:

Fatal error:  Uncaught exception 'ImagickException' with message 'no decode delegate for this image format `HTML' @ error/constitute.c/ReadImage/535' in uploader.php:86
Stack trace:
#0 uploader.php(86): Imagick->__construct('http://www.nycvelo.com/wp-content/uploads/2013/10/Nicks-Geekhouse-7.jpg')

据我所知,没有" html"首先是委托,也没有意义,所以也许这需要ImageMagick / Imagick之外的解决方案?

更新

我对该文件进行了测试以查看已发回的标头,这是我在使用file_get_contents后获得的。

array(9) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(23) "Content-Type: text/html"
  [2]=>
  string(17) "Connection: close"
  [3]=>
  string(23) "Cache-Control: no-cache"
  [4]=>
  string(17) "Connection: close"
  [5]=>
  string(20) "Content-Length: 6195"
  [6]=>
  string(81) "X-Iinfo: 5-12048231-0 0CNN RT(1434509018550 6) q(1 -1 -1 -1) r(1 -1) B10(4,289,0)"
  [7]=>
  string(163) "Set-Cookie: visid_incap_264353=osbiSagORl2MGqb2cebUn9regFUAAAAAQUIPAAAAAAAUiLr5I31XtpMPuiNCWNQH; expires=Thu, 15 Jun 2017 13:43:05 GMT; path=/; Domain=.nycvelo.com"
  [8]=>
  string(118) "Set-Cookie: incap_ses_239_264353=XJXubnJwpRuBGVGGahpRA9regFUAAAAAbY2asXWHPVkKb5NEpRJyXg==; path=/; Domain=.nycvelo.com"
}

2 个答案:

答案 0 :(得分:1)

我强烈建议不要使用Imagick从其他服务器下载图像。使用CURL或其他一些库可以让您充分控制下载(包括能够看到重定向,不正确的内容类型等),然后在Imagick正确下载后处理图像。

来源 - 我是Imagick的维护者。

答案 1 :(得分:0)

服务器可能会将您的请求重定向到某处的某个html页面,检查响应的内容以确定是否属于这种情况。