Здравствуй уважаемый читатель, иногда случается так, что вручную сохранить картинки со страницы какого либо ресурса, немного накладно. Если картинок много, то задачу автоматического сохранения их в файл можно переложить на плечи 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 сохранение картинки“, подразумевает сохранение только картинок, но с помощью приведенного скрипта, можно сохранить все файлы с сайта, немного изменив код. Если вас заинтересует, я напишу о том как это сделать.