代码之家  ›  专栏  ›  技术社区  ›  Dave Kiss

如何在ImageMagick中嵌入远程图像

  •  1
  • Dave Kiss  · 技术社区  · 15 年前

    我正在尝试使用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 回复  |  直到 13 年前
        1
  •  2
  •   Pekka    15 年前

    ImageMagick的构造函数是 badly documented 所以我不能肯定,但也许Imagick不能处理远程文件路径。

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

        2
  •  5
  •   BDoran    15 年前

    我不得不对Youtube做同样的事情。。。您需要将文件路径传递给ImageMagic,而不是文件放置内容实例。

    <?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;
    ?>
    
        3
  •  2
  •   code100    10 年前

    如果你喜欢卷曲,

    <?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;
    
        4
  •  1
  •   Corentin Larose    10 年前

    <?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;
    
    推荐文章