1

我正在尝试使用 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;
?>

有没有人有什么建议?

谢谢!

4

4 回答 4

5

我必须对 Youtube 做同样的事情......你需要将文件路径传递给 ImageMagic,而不是 file_put_contents 实例。

<?php
   $kunaki_image = file_get_contents("http://kunaki.com/ProductImage.ASP?T=I&ST=FO&PID=PX003Y9EDJ");
   $name = tempnam("/tmp", "kunaki");
   file_put_contents($name, $kunaki_image);
   $image = new Imagick($name);
   $image->thumbnailImage(100, 0);
   header( "Content-Type: image/jpg" );
   echo $image;
?>
于 2011-04-21T14:47:52.580 回答
2

ImageMagick 的构造函数记录不充分,所以我不能确定,但​​也许 Imagick 无法处理远程文件路径。

尝试单独获取它,例如使用file_get_contents()or curl。以临时名称将其存储在本地,然后将其传递。

于 2010-10-13T15:00:35.157 回答
2

如果你喜欢卷曲,

<?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;
于 2016-02-10T11:57:22.987 回答
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;
于 2015-10-13T13:54:58.370 回答