最近一直很忙,遇到一個手工活,需要下載一些遠端圖片,一共一百多張,如果通過手工一張一張的儲存,也太耗費時間了,於是上網google了一把,找到PHP批量下載圖片檔案的方法,原文是出自平凡世界部落格的一片關於如何使用PHP批量下載CSS檔案中的圖片的文章。經過研究改寫了一下就可以使用了,方便快捷多了。
PHP批量下載圖片檔案代碼:
| 代碼如下 |
複製代碼 |
set_time_limit(0);//設定PHP逾時時間 $imagesURLArray = array_unique($imagesURLArray ); foreach($imagesURLArray as $imagesURL) { echo $imagesURL; echo " "; file_put_contents(basename($imagesURL), file_get_contents($imagesURL)); } |
原理很簡單,通過一個含有圖片地址的數組迴圈,然後使用PHP的file_get_contents函數取得圖片,在使用file_put_contents函數把圖片儲存下來。
P.S:一定要加上設定PHP逾時時間哦~!
附上原文中通過php下載css中圖片的代碼:
| 代碼如下 |
複製代碼 |
< ?php /* More & Original PHP Framwork Copyright (c) 2007 - 2008 IsMole Inc. Author: kimi Documentation: 下載樣式檔案中的圖片,水水專用扒皮工具 */ //note 設定PHP逾時時間 set_time_limit(0); //note 取得樣式檔案內容 $styleFileContent = file_get_contents('images/style.css'); //note 匹配出需要下載的URL地址 preg_match_all("/url((.*))/", $styleFileContent, $imagesURLArray); //note 迴圈需要下載的地址,逐個下載 $imagesURLArray = array_unique($imagesURLArray[1]); foreach($imagesURLArray as $imagesURL) { file_put_contents(basename($imagesURL), file_get_contents($imagesURL)); } |
後來又找到一個php批量下載圖片檔案
假如現在我現在發現一個網站上的圖片儲存方式是1001 – 1999目錄下都存放著從1開始(數量不等)的.jpg圖片,現在我決定用php的方法將圖片按照自己需要的樣式直接下載到本地
假如圖片開始地址為:yun_qi_img/1.jpg
這時我將1001處放到變數$id,1.jpg放到變數$num.jpg,儲存的檔案名稱為$id_$num.jpg
首先確保在此檔案執行目錄下面建一個名為img的並且可寫的檔案夾
| 代碼如下 |
複製代碼 |
<?php $id= isset($_GET['id']) && intval($_GET['id']) && $_GET['id']>1000 ? $_GET['id'] : 1001; $num= isset($_GET['num']) && intval($_GET['num']) ? $_GET['num'] : 1; $url="yun_qi_img/{$num}.jpg"; $array=get_headers($url,1); //通過返回200和400來判斷是增加$id或者$num if(preg_match('/200/',$array[0])){ $new_url="?id={$id}&num=".($num+1); ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $filename="./img/{$id}_{$num}.jpg"; $f=fopen($filename,'a'); fwrite($f,$img); fclose($f); }else{ $new_url="?id=".($id+1)."&num=1"; } if($id > 1999) exit('全部完成'); //顯示當前的狀態 echo $url,' - ',$array[0],'<script>location.href="'.$new_url.'";</script>'; |