PHP

php сохранение картинки

Здравствуй уважаемый читатель, иногда случается так, что вручную сохранить картинки со страницы какого либо ресурса, немного накладно. Если картинок много, то задачу автоматического сохранения их в файл можно переложить на плечи PHP. Статья php сохранение картинки, обещает быть очень короткой, и нести в себе минимум лишней информации.

Для того чтобы нам с помощью php скрипта можно было осуществить сохранение картинки, нужно изучить предназначение функции copy(). Не трудно догадаться, что данная функция что-то копирует, а именно она занимается копированием и сохранением файлов, в том числе и картинок. В параметры этой функции нужно передать путь к картинке, которую нужно сохранить и название, которое получит сохраненная картинка.

Скопировать одну картинку с помощью php (Задача №1)

Допустим мы имеем url нужного изображения:
$url="http://lifeexample.ru/logo.jpg"

Мы хотим скопировать ее себе на сервер и дать имя “some_image.jpg”
$name="some_image.jpg"

Передадим в функцию copy, наши параметры
copy ( $url, $name );

Запускаем скрипт, и смотрим на содержимое директории, из которой он был вызван. Если все прошло гладко, то мы обнаружим сохраненную картинку.

Скопировать все картинки со страницы с помощью php (Задача №2)

Зная как сохранить одну картинку, не сложно написать парсер всей страницы, с последующим сохранением найденных изображений. Для этого советую воспользоваться материалом изложенном в статье: “Регулярные выражения в PHP“.

Сразу приведу код рабочего php скрипта для сохранения всех картинок со страницы.
Header('Content-type: text/html; charset=utf-8');
$url="http://lifeexample.ru/";//url страницы, с которой будем копировать все картинки
function getContentPage($url){//функция для получения исходного кода страницы
    $c = curl_init($url);       
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
    $text = curl_exec($c);
    curl_close($c);     
    return $text;
}
//регулярнымвыражением парсим страницу, и находим все картники с расширением png и jpg
preg_match_all("'<img\s+src=\"(\S*.(png|jpg))\"'si",getContentPage($url),$result);      
foreach($result[1] as $name) 
        {
            $row['image'][]=$name;
        }
$k=0; 
//перебираем все найденные картинки, создаем для них директории, и сохраняем изображения
 while ($k<=(count($row['image'])-1))
 {
    $url=$row['image'][$k];
    $name= $row['image'][$k];
    $name=str_replace("http://lifeexample.ru/","",$name);
    echo ($k+1).") Успешно сохранена картинка: <b>".$name."</b><br/>";
    $dir="";
    $result1=explode("/", $name);           
        for($i=0 ; $i<=(count($result1)-2); $i++ ) 
                {       
                    if (!file_exists($dir.$result1[$i])){
                        mkdir($dir.$result1[$i], 0777);
                    }           
                    $dir.=$result1[$i]."/";
                }
        copy($url,$name);       
    $k++;   
  } 
?>

Скрипт с помощью функции curl_init() получает содержимое нужной страницы и регулярным выражением выбирает все картинки с расширением png и jpg. Далее для каждой из картинок создается определенная ссылкой структура папок, и функцией copy() сохраняется на наш сервер.

Внимание! При использовании функции curl_init() на денвере, не редко вы можете столкнуться с ошибкой ее использования. Если это случилось, то прочтите решение этой проблемы в статье Fatal error: Call to undefined function curl_init()

Результатом работы данного скрипта вы увидите: полностью скопированную структуру картинок и папок с сайта источника, на вашем сервере. Кстати говоря, хоть и статья “php сохранение картинки“, подразумевает сохранение только картинок, но с помощью приведенного скрипта, можно сохранить все файлы с сайта, немного изменив код. Если вас заинтересует, я напишу о том как это сделать.
Теги:
сохранение, картинка
Добавлено: 29 Сентября 2013 07:31:35 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...