我正在尝试使用ImageMagick的iMagick包装器从我的服务器上没有的图像生成简单的缩略图。出于某种原因,以下代码在调用时不会显示任何内容:
<?php
$image = new Imagick("http://kunaki.com/ProductImage.ASP?T=I&ST=FO&PID=PX003Y9EDJ");
$image->thumbnailImage(100, 0);
header( "Content-Type: image/jpg" );
echo $image;
?>
我也尝试使用http://kunaki.com/ProductImage.ASP?T=I&ST=FO&PID=PX003Y9EDJ.jpg
无效。
根据下面的评论,我也尝试了这一点,没有结果,但我不确定语法是否正确。
<?php
$kunaki_image = file_get_contents("http://kunaki.com/ProductImage.ASP?T=I&ST=FO&PID=PX003Y9EDJ");
$name = tempnam("/tmp", "kunaki");
$final = file_put_contents($name, $kunaki_image);
$image = new Imagick($final);
$image->thumbnailImage(100, 0);
header( "Content-Type: image/jpg" );
echo $image;
?>
有人有任何建议吗?
谢谢!
答案 0 :(得分:4)
我必须对Youtube做同样的事情......你需要将文件路径传递给ImageMagick,而不是file_put_contents实例。
答案 1 :(得分:2)
ImageMagick的构造函数是badly documented所以我无法确定,但Imagick可能无法处理远程文件路径。
尝试单独提取,例如使用file_get_contents()
或curl
。以临时名称将其存储在本地,并将其传递给它。
答案 2 :(得分:2)
如果你更喜欢cUrl,
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$resp = curl_exec($curl);
$image = new \Imagick();
$image->readImageBlob($resp);
$image->thumbnailImage(100, 0);
header( "Content-Type: image/jpg" );
echo $image;
答案 3 :(得分:1)
避免在磁盘上写字有一点改进:
<?php
$handle = fopen("http://kunaki.com/ProductImage.ASP?T=I&ST=FO&PID=PX003Y9EDJ", 'rb');
$image = new \Imagick();
$image->readImageFile($handle);
fclose($handle);
$image->thumbnailImage(100, 0);
header( "Content-Type: image/jpg" );
echo $image;