Как встроить удаленное изображение в ImageMagick - PullRequest
1 голос
/ 13 октября 2010

Я пытаюсь создать простую миниатюру из изображения, которое не находится на моем сервере, с помощью оболочки iMagick для 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;
?>

У кого-нибудь есть предложения?

Спасибо!

Ответы [ 4 ]

5 голосов
/ 21 апреля 2011

Мне пришлось сделать то же самое с 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;
?>
2 голосов
/ 10 февраля 2016

если вы предпочитаете 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;
2 голосов
/ 13 октября 2010

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

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

1 голос
/ 13 октября 2015

небольшое улучшение, чтобы избежать записи на диск:

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