首頁  >  文章  >  後端開發  >  php下載網路圖片常用的三個方法總結

php下載網路圖片常用的三個方法總結

齐天大圣
齐天大圣原創
2020-05-03 09:11:332837瀏覽

下面來講利用PHP下載網路圖片常用的三個方法。當然,這三個方法都不是萬能的,有時候會因為網路問題,或是網路圖片的權限問題(大站一般都有防盜鏈)導致下載失敗。

一起來看看吧,實際工作中常用到。

方法一

優點:簡單。

缺點:效率相對較低。

這個方法主要用到的函數有兩個file_get_contents以及file_put_contents這個方法很簡單,通俗的講就是先get到圖片內容,然後再put到文件中。

程式碼如下:

<?php
$imgFile = &#39;http://***.***.***/Uploads/20200424/1587710975CZlGeB.jpg&#39;;
// 获取文件名
$imgName = trim(strrchr($imgFile, &#39;/&#39;), &#39;/&#39;);
file_put_contents($imgName, file_get_contents($imgFile));

方法二

個人用的最多的方法。

缺點:稍微複雜一點,要掌握curl的用法,需要知道curl一些選項的意義。

優點:效率高,很容易支援https;

curl非常強大,也是phper必須掌握的技能,所以建議大家使用這個方法。該方法的思路是,使用curl工具獲取遠端圖片的信息,然後將該信息保存到本地的文件中。這裡我沒有對curl_exec的結果做校驗了,偷個懶。

關於curl的用法,如果有想深入了解的,可以在php中文網中搜尋curl。

$imgFile = &#39;https://***.***.***/uploads/20200121/bd873d80da430f8b74ef1ee751945595.png&#39;;
function down_img($imgUrl)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $imgUrl);    // 请求地址
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    // 不直接输出信息
    // 可以访问https请求
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    // 执行curl并获取数据
    $results = curl_exec($ch);
    $imgName = trim(strrchr($imgUrl, &#39;/&#39;), &#39;/&#39;);
    $fp = fopen($imgName, &#39;w&#39;);
    fwrite($fp, $results);
      // 执行完毕后,记得关闭资源
    curl_close($ch);
}
down_img($imgFile);

方法三

這個方法也很簡單,用到的是php的檔案管理知識。首先建立兩個檔案句柄,一個用於讀取遠端圖片的二進位訊息,另一個用於保存圖片資訊的。

<?php
$imgFile = &#39; 
$imgName = trim(strrchr($imgFile, &#39;/&#39;), &#39;/&#39;);

// 读取远程图片资源
$source = fopen($imgFile, &#39;rb&#39;);
// 创建本地文件资源句柄,用于保存图片信息
$down   = fopen($imgName, &#39;wb&#39;);

while ($chunk = fread($source,1024)){
    fwrite($down, $chunk, 1024);
}
fclose($source);
fclose($down);

總結

個人工作中主要用到了下列的第一種及第二種方法。另外多說一句,圖片下載倒沒什麼關係,但下載的圖片怎麼用就要注意了。用的不好,就可能產生侵權問題了哦。

以上是php下載網路圖片常用的三個方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn