Cum descarci o imagine cu PHP

AnoniMouse

Active Member
Registered
Full Member
Salut!
Vreau sa descarc o imagine cu PHP dintr-un url.
Problema este ca url-ul respectiv cu imaginea este disponibil doar in "<img tag" nu si direct pe link-ul respectiv.
Trebuie mascat header-ul cumva? sa para ca requestul vine de la un tag img? sau cum se procedeaza.
multumesc!
 
O idee.

In img tag presupun ca are un nume, titlul plus extensie nu?
Mergi in inspect element si vezi calea la imagine, cea reală.
Apoi cu php adaugi id / nume la img la link.


O alta metoda este link de mai sus.
 
O idee.

In img tag presupun ca are un nume, titlul plus extensie nu?
Mergi in inspect element si vezi calea la imagine, cea reală.
Apoi cu php adaugi id / nume la img la link.


O alta metoda este link de mai sus.
n-ai inteles, ce a zis el este hotlink protection, in general este bazata doar pe http referrer, dar poate avea si sesiuni, etc. depinde de site.


* Get referer inside php file_get_contents
* posibil sa mai trebuiasca si user-agent. adaugi in same array, dupa \r\n, urmat de \r\n ca si primul
* astept pm cu site-ul daca nu reusesti.
 
Ultima editare:
O idee simpla...

Asa iti listeaza toate imaginile:
PHP:
$url="http://example.com";

$html = file_get_contents($url);

$doc = new DOMDocument();
@$doc->loadHTML($html);

$tags = $doc->getElementsByTagName('img');

foreach ($tags as $tag) {
       echo $tag->getAttribute('src');
}

Iar daca vrei sa downloadezi imagini cu php, poti face in mai multe feluri, dar uite 2 exemple:

1.
PHP:
$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));

2.
PHP:
$ch = curl_init('http://example.com/image.php');
$fp = fopen('/my/folder/flower.gif', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

Personal eu prefer cURL, dar totul depinde de tine si ce vrei sa faci.

Sper sa te ajute!
 
n-ai inteles, ce a zis el este hotlink protection, in general este bazata doar pe http referrer, dar poate avea si sesiuni, etc. depinde de site.


* Get referer inside php file_get_contents
* posibil sa mai trebuiasca si user-agent. adaugi in same array, dupa \r\n, urmat de \r\n ca si primul
* astept pm cu site-ul daca nu reusesti.
asta este un exemplu de link:
Cod:
https://s9.netu.tv/flv/api/files/thumbs_new/2022/05/28/1653739639bhrr0/1653739639bhrr0-640x480-1.jpg

Pe direct nu merge, doar in "<img"
 
PHP:
$headers = ['accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8','origin: https://netu.io/','referer: https://netu.io/','sec-fetch-dest: image','sec-fetch-mode: cors','sec-fetch-site: cross-site','user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Mobile Safari/537.36'];
$context = stream_context_create([
'http'=> [
'header'=> $headers
]
]);
//varianta 1
copy("https://s9.netu.tv/flv/api/files/thumbs_new/2022/05/28/1653739639bhrr0/1653739639bhrr0-640x480-1.jpg","image.jpg",$context);
//varianta 2
file_put_contents("image.jpg",file_get_contents("https://s9.netu.tv/flv/api/files/thumbs_new/2022/05/28/1653739639bhrr0/1653739639bhrr0-640x480-1.jpg", false, $context));
//varianta 3
$ch = curl_init('https://s9.netu.tv/flv/api/files/thumbs_new/2022/05/28/1653739639bhrr0/1653739639bhrr0-640x480-1.jpg');
$fp = fopen('image.jpg', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);
curl_close($ch);
fclose($fp);
 
PHP:
$headers = ['accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8','origin: https://netu.io/','referer: https://netu.io/','sec-fetch-dest: image','sec-fetch-mode: cors','sec-fetch-site: cross-site','user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Mobile Safari/537.36'];
$context = stream_context_create([
'http'=> [
'header'=> $headers
]
]);
//varianta 1
copy("https://s9.netu.tv/flv/api/files/thumbs_new/2022/05/28/1653739639bhrr0/1653739639bhrr0-640x480-1.jpg","image.jpg",$context);
//varianta 2
file_put_contents("image.jpg",file_get_contents("https://s9.netu.tv/flv/api/files/thumbs_new/2022/05/28/1653739639bhrr0/1653739639bhrr0-640x480-1.jpg", false, $context));
//varianta 3
$ch = curl_init('https://s9.netu.tv/flv/api/files/thumbs_new/2022/05/28/1653739639bhrr0/1653739639bhrr0-640x480-1.jpg');
$fp = fopen('image.jpg', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);
curl_close($ch);
fclose($fp);
Multumesc! Merge perfect!
 
  1. file_get_contents () - This function is used to read the image file from URL and return the content as a string.
  2. file_put_contents () - This function is used to write remote image data to a file.
 
Loading...
Back
Sus