在用php的imagick在访问远程URL图片的时候会出现Failed to read the file问题,这是因为imagick读取不了远程url导致的。
翻了翻imagick手册,发现了一个Imagick::readImageBlob,从字面上的意思来看,就是读取图片的二进制代码,看到这里就有思路了。
imagick不能读取远程图片,但是php可以啊。file_get_contents返回的正好是二进制代码。那么可以这样子实现:
<?php
$url = 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png';
$image = new Imagick();
$image->readImageBlob(file_get_contents($url));
header('Content-type: '.$image->getImageFormat());
echo $image->getImageBlob();
$image->destroy();
?>
这样子就把远程图片输出来了。