2010-10-13 2 views
1

Я пытаюсь сделать простое генерирование эскизов из изображения, которое не расположено на моем сервере, с использованием обертки iMagick для ImageMagick. По какой-то причине, следующий код ничего не отображается при вызове:Как вставить удаленное изображение в ImageMagick

<?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

вы получите эту ошибку? Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_STRING в /home/jmvarela/public_html/ihateyourjacket.com/game/image.php в строке 2 – Trufa

+0

нет, я просто ничего не получаю. –

ответ

2

Конструктор ImageMagick - badly documented, поэтому я не могу точно сказать, но, возможно, Imagick не может иметь дело с удаленными путями файлов.

Попробуйте выбрать его отдельно, например. используя file_get_contents() или curl. Храните его локально под временным именем и передавайте его.

+0

Я пробовал с местным изображением, это тоже не хорошо! – Trufa

+0

@Trufa означает, что именно? Что происходит? –

+0

Я получаю эту ошибку: Ошибка анализа: ошибка синтаксиса, неожиданный T_STRING в /home/jmvarela/public_html/ihateyourjacket.com/game/image.php в строке 2 с одним из ... – Trufa

4

Мне нужно было сделать то же самое с 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; 
?> 
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; 
+0

Это лучшее решение, на мой взгляд, поскольку оно не создает временные файлы. Если вы хотите, чтобы он работал с большим количеством форматов изображений, тогда jpg изменит строку заголовка на: заголовок ('Content-Type: image /'.$ Image-> getImageFormat()); – Kupe

1

если вы perfer локон,

<?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;