Trong bài viết này mình sẽ giới thiệu cho các bạn 3 cách để lấy hình và save vào máy tính của bạn bằng PHP từ một đường dẫn bất kỳ trên internet, Nào chúng ta cùng khám phá nha.
Cách 1 : Sử dụng file_get_contents
$contents= file_get_contents('http://mydomain.com/folder/image.jpg');
Cách 2 : Sử dụng hàm fsockopen ()
Để có thể lấy hình với fsockopen() bạn cần chỉ định tên host và phần đường dẫn đến hình ảnh từ url. Để hiểu rõ hơn các bạn có thể tham khảo hàm lấy hình sau đây:
function GetImg($host,$link)
{
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr (error number $errno)
\n";
} else {
$out = "GET $link HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n\r\n";
$out .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
$out .= "Accept-Language: en-us,en;q=0.5\r\n";
$out .= "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
$out .= "Keep-Alive: 300\r\n";
$out .= "\r\n";
fwrite($fp, $out);
$contents='';
while (!feof($fp)) {
$contents.= fgets($fp, 1024);
}
fclose($fp);
return $contents;
}
}
– Giả sử đường dẫn hình ảnh mà chúng ta cần lấy như sau : http://www.google.com/intl/en_ALL/images/logo.gif
Để sử dụng hàm này thì các bạn dùng như sau :
$contents=GetImg("www.google.com","/intl/en_ALL/images/logo.gif");
$contents=strchr($contents,"\r\n\r\n");// xóa bỏ headers
$contents=ltrim($contents);// xóa bỏ khoảng trắng
Cách 3 : Sử dụng CURL
Để sử dụng hàm này thì host của bạn cần cài đặt libcurl và phiên bản từ PHP 4.0.2 trở nên. Và đây là cách sử dùng hàm này :
$contents=GetImageFromUrl("http://domain.com/path/image.jpg");
Trên đây là 3 cách và để có thể lấy hình và để save lại thì các bạn sử dụng như sau :
$savefile = fopen('image.jpg', 'w');
fwrite($savefile, $contents);
fclose($savefile);
Trong đó image.jpg là tên hình sẽ được save lại, bạn có thể đổi bất kỳ tên nào mà bạn muốn.