Как я могу загрузить изображение с URL в PHP - PullRequest
6 голосов
/ 05 января 2010

В PHP с использованием GD или imagemagick, как я могу выложить фотографию с URL-адреса, я хочу создать функцию, в которой я могу передать несколько параметров и выложить изображение, я могу выгрузить большое изображение, изменить его размер меньше, затем измените размер нескольких уменьшенных изображений и сохраните все изображения в этом месте из 1 изображения, но я хотел бы добавить возможность получить изображение из URL, а затем запустить на нем свой код, чтобы изменить размер и сделать большие пальцы.

Буду ли я использовать curl или что-то еще, любые примеры или идеи будут высоко оценены

Ответы [ 3 ]

11 голосов
/ 05 января 2010
$image = @ImageCreateFromString(@file_get_contents($imageURL));

if (is_resource($image) === true)
{
    // image is valid, do your magic here
}

else
{
    // not a valid image, show error
}

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

2 голосов
/ 05 января 2010

В зависимости от конфигурации PHP, fopen может разрешать или не разрешать это напрямую: http://php.net/manual/en/function.fopen.php

В качестве альтернативы, вы можете открыть сокет (http://php.net/manual/en/book.sockets.php) и напрямую записать / прочитать HTTP (http://www.faqs.org/rfcs/rfc2616.html)). Я бы не использовал curl, если вы ОЧЕНЬ осторожны с разрешениями (особенно для выполнения), или может гарантировать, что никто из злоумышленников не получит доступ к инструменту, поскольку вы эффективно откроете потенциальный путь атаки (ну, строго говоря, вы уже есть, но это может быть использовано несколькими различными способами)

0 голосов
/ 05 января 2010
$img = '';
$fp = fopen($url, 'rb');
if($fp) {
    while($buf = fread($fp, 1024)) {
        $img .= $buf;
    }    
}
fclose($fp);

// при условии, что включены URL-оболочки

...