Создать эскиз из URL? - PullRequest
       13

Создать эскиз из URL?

0 голосов
/ 11 февраля 2011

Я пытаюсь использовать эту функцию для создания миниатюр из расширенных URL-адресов из amazon s3.

function resizeImage($originalImage,$toWidth,$toHeight){

    // Get the original geometry and calculate scales
    list($width, $height) = file_get_contents($originalImage);
    $xscale=$width/$toWidth;
    $yscale=$height/$toHeight;

    // Recalculate new size with default ratio
    if ($yscale>$xscale){
        $new_width = round($width * (1/$yscale));
        $new_height = round($height * (1/$yscale));
    }
    else {
        $new_width = round($width * (1/$xscale));
        $new_height = round($height * (1/$xscale));
    }

    // Resize the original image
    $imageResized = imagecreatetruecolor($new_width, $new_height);
    $imageTmp     = imagecreatefromjpeg ($originalImage);
    imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    return $imageResized;
}

Проблема, с которой я столкнулся, заключается в том, что она работает только с относительными URL-адресами, и я получаю следующие ошибки.

Warning: Division by zero in /home/isd/public_html/swfupload/resize.php on line 15

Warning: Division by zero in /home/isd/public_html/swfupload/resize.php on line 16

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/isd/public_html/swfupload/resize.php on line 20

Warning: imagecreatefromjpeg(Chrysanthemum.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/isd/public_html/swfupload/resize.php on line 21

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/isd/public_html/swfupload/resize.php on line 22

Warning: Division by zero in /home/isd/public_html/swfupload/resize.php on line 15

Warning: Division by zero in /home/isd/public_html/swfupload/resize.php on line 16

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/isd/public_html/swfupload/resize.php on line 20

Warning: imagecreatefromjpeg(Desert.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/isd/public_html/swfupload/resize.php on line 21

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/isd/public_html/swfupload/resize.php on line 22

Warning: file_get_contents(http://isdprogress.s3.amazonaws.com/HQ preview.jpg) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 505 HTTP Version Not Supported in /home/isd/public_html/swfupload/resize.php on line 5

Есть ли у кого-нибудь хороший способ или функция, которую я могу использовать, которая работает, чтобы изменить размеры изображений для миниатюр от внешних URL-адресов ???

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

file_get_contents не возвращает ни ширину, ни высоту ресурса изображения.

Возвращает содержимое файла в строку: http://hu2.php.net/manual/en/function.file-get-contents.php

Вместо этого используйте imagesx и imagesy:

http://hu2.php.net/manual/en/function.imagesx.php

http://hu2.php.net/manual/en/function.imagesy.php

Добавить:

Я не знаю ваш процесс, но я думаю, что вы просто извлекаете изображение в виде строки с file_get_contents, который не является допустимым ресурсом изображения.

Итак, вы должны преобразовать эти данные в ресурс изображения. Используйте функцию imagecreatefromstring: http://hu2.php.net/manual/en/function.imagecreatefromstring.php

Отказ от ответственности: я не вижу ваш полный код, так что просто предположение, что у вас нет ресурса изображения:)

0 голосов
/ 11 февраля 2011

Хорошо

Наконец-то все заработало для этого замечательного решения здесь http://joedesigns.com/v22/?page=scripts_widgets&id=67

Порадуйте себя;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...