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 でも同じことをしなければなりませんでした... file_put_contents インスタンスではなく、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;
?>
于 2011-04-21T14:47:52.580 に答える
2

ImageMagick のコンストラクターは文書化されていないため、はっきりとは言えませんが、Imagick はリモート ファイル パスを処理できない可能性があります。

file_get_contents()またはを使用して、個別に取得してみてくださいcurl。一時的な名前でローカルに保存し、それを渡します。

于 2010-10-13T15:00:35.157 に答える
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;
于 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 に答える