抓取遠程圖片到本地,你會用什麽函數?
阿新 • • 發佈:2019-03-07
www 解析 關閉 arr ray urn pen 你會 獲取 方式有:
<?php function getImage($url,$filename="") { if ($url == "") return false; if ($filename === "") { $ext_name = strrchr($url,‘.‘); //獲取圖片的擴展名 if (!in_array($ext_name, [‘.gif‘, ‘.jpg‘, ‘.bmp‘, ‘.png‘])) { return false; } $filename = time() . $ext_name; } // 開始捕獲 // 文件 保存路徑 ob_start(); /* * ob_start()在服務器打開一個緩沖區來保存所有的輸出。 * 所以在任何時候使用echo ,輸出都將被加入緩沖區中, * 直到程序運行結束或者使用ob_flush()來結束。 * 然後在服務器中緩沖區的內容才會發送到瀏覽器,由瀏覽器來解析顯示。 * * 使用ob_start()把輸出那同輸出到緩沖區,而不是到瀏覽器。 */ readfile($url); /* * readfile() 函數輸出一個文件。 *該函數讀入一個文件並寫入到輸出緩沖。 */ $img_date = ob_get_contents(); /* * 然後用ob_get_contents得到緩沖區的數據。 */ ob_end_clean(); /* * 函數ob_end_clean 會清除緩沖區的內容,並將緩沖區關閉,但不會輸出內容。 */ $size = strlen($img_date); //文件大小 $local_file = fopen($filename, ‘a‘); fwrite($local_file, $img_date); fclose($local_file); return $filename; } echo getImage("http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif");
另外還有:
<?php
$img = file_get_contents(‘http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif‘);
file_put_contents(‘a.gif‘, $img);
echo ‘<img src="a.gif">‘;
這段抓取遠程圖片至本地在運行中360極速、火狐、谷歌、獵豹沒有出現錯誤,可以正常運行。
還有:
<?php $img = file_get_contents(‘http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif‘); echo $img;
該段代碼在360極速瀏覽器中運行沒有出現錯誤,但是在火狐、谷歌、獵豹瀏覽器中出現了“亂碼”。
抓取遠程圖片到本地,你會用什麽函數?