日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP采集远程图片

發(fā)布時(shí)間:2024/4/15 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP采集远程图片 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


?

  • <?php?
  • /*使用PHP實(shí)現(xiàn)采集遠(yuǎn)程圖片功能。基本流程:?
  • ?
  • 1、獲取目標(biāo)網(wǎng)站圖片地址。?
  • ?
  • 2、讀取圖片內(nèi)容。?
  • ?
  • 3、創(chuàng)建要保存圖片的路徑并命名圖片名稱。?
  • ?
  • 4、寫入圖片內(nèi)容。?
  • ?
  • 5、完成。?
  • ?
  • 我們通過寫幾個(gè)函數(shù)來實(shí)現(xiàn)這一過程。*/?
  • ?
  • //函數(shù)make_dir()建立目錄。判斷要保存的圖片文件目錄是否存在,如果不存在則創(chuàng)建目錄,并且將目錄設(shè)置為可寫權(quán)限。?
  • function?make_dir($path){??
  • ????if(!file_exists($path)){//不存在則建立??
  • ????????$mk=@mkdir($path,0777);?//權(quán)限??
  • ????????@chmod($path,0777);??
  • ????}??
  • ????return?true;??
  • }??
  • ?
  • //函數(shù)read_filetext()取得圖片內(nèi)容。使用fopen打開圖片文件,然后fread讀取圖片文件內(nèi)容。?
  • function?read_filetext($filepath){??
  • ????$filepath=trim($filepath);??
  • ????$htmlfp=@fopen($filepath,"r");??
  • ????//遠(yuǎn)程??
  • ????if(strstr($filepath,"://")){??
  • ????????while($data=@fread($htmlfp,500000)){??
  • ????????????$string.=$data;??
  • ????????}??
  • ????}??
  • ????//本地??
  • ????else{??
  • ????????$string=@fread($htmlfp,@filesize($filepath));??
  • ????}??
  • ????@fclose($htmlfp);??
  • ????return?$string;??
  • }??
  • ?
  • ?
  • //函數(shù)write_filetext()寫文件,將圖片內(nèi)容fputs寫入文件中,即保存圖片文件。?
  • function?write_filetext($filepath,$string){??
  • ????//$string=stripSlashes($string);??
  • ????$fp=@fopen($filepath,"w");??
  • ????@fputs($fp,$string);??
  • ????@fclose($fp);??
  • }??
  • ?
  • ?
  • //函數(shù)get_filename()獲取圖片名稱,也可以自定義要保存的文件名。?
  • function?get_filename($filepath){??
  • ????$fr=explode("/",$filepath);??
  • ????$count=count($fr)-1;??
  • ????return?$fr[$count];??
  • }??
  • ?
  • ?
  • //然后將幾個(gè)函數(shù)組合,在函數(shù)save_pic()中調(diào)用,最后返回保存后的圖片路徑。?
  • function?save_pic($url,$savepath=''){??
  • ????//處理地址??
  • ????$url=trim($url);??
  • ????$url=str_replace("?","%20",$url);??
  • ????//讀文件??
  • ????$string=read_filetext($url);??
  • ????if(emptyempty($string)){??
  • ????????echo?'讀取不了文件';exit;??
  • ????}??
  • ????//文件名??
  • ????$filename?=?get_filename($url);??
  • ????//存放目錄??
  • ????make_dir($savepath);?//建立存放目錄??
  • ????//文件地址??
  • ????$filepath?=?$savepath.$filename;??
  • ????//寫文件??
  • ????write_filetext($filepath,$string);??
  • ????return?$filepath;??
  • }??
  • ?
  • ?
  • //最后一步就是調(diào)用save_pic()函數(shù)保存圖片,我們使用以下代碼做測試。?
  • //目標(biāo)圖片地址??
  • //$pic?=?"http://img0.pconline.com.cn/pconline/1205/06/2776119_end1_thumb.jpg";??
  • //?for($i=100;?$i<=204;?$i++)?
  • //?{?
  • ????//?$pic?=?'http://cache.soso.com/img/img/e'.$i.'.gif';?
  • 保存目錄??
  • //?$savepath?=?"images/";??
  • //?echo?save_pic($pic,$savepath)."<br?/>";??
  • //?}?
  • ?
  • ?
  • /*?
  • 實(shí)際應(yīng)用中,我們可能會采集某個(gè)站點(diǎn)的內(nèi)容,比如產(chǎn)品信息,包括采集防盜鏈的圖片保存到網(wǎng)站上服務(wù)器上。這時(shí)我們可以使用正則匹配頁面內(nèi)容,將頁面中相匹配的圖片都找出來,然后分別下載到網(wǎng)站服務(wù)器上,完成圖片的采集。以下代碼僅供測試:?
  • */?
  • function?get_pic($cont,$path){??
  • ????$pattern_src?=?'/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/';??
  • ????$num?=?preg_match_all($pattern_src,?$cont,?$match_src);??
  • ????$pic_arr?=?$match_src[1];?//獲得圖片數(shù)組??
  • ????foreach?($pic_arr?as?$pic_item)?{?//循環(huán)取出每幅圖的地址??
  • ????????save_pic($pic_item,$path);?//下載并保存圖片??
  • ????????echo?"[OK]..!<br?/>";??
  • ????}??
  • }??
  • ?
  • //然后我們通過分析頁面內(nèi)容,將主體內(nèi)容找出來,調(diào)用get_pic()實(shí)現(xiàn)圖片的保存。?
  • ??
  • //我們采集太平洋電腦網(wǎng)上一篇關(guān)于手機(jī)報(bào)道內(nèi)容頁的圖片??php100.com
  • $url?=?"http://gz.pconline.com.cn/321/3215791.html";??
  • ??
  • $content?=?file_get_contents($url);//獲取網(wǎng)頁內(nèi)容??
  • $preg?=?'#<div?class="art_con">(.*)<div?class="ivy620?ivy620Ex"></div>#iUs';??
  • preg_match_all($preg,?$content,?$arr);??
  • $cont?=?$arr[1][0];???
  • get_pic($cont,'img/');??
  • ?
  • /*?
  • 以上代碼筆者親測,可以采集圖片,但是還有些場景沒考慮進(jìn)去,比如目標(biāo)網(wǎng)站做了302多次跳轉(zhuǎn)的,目標(biāo)網(wǎng)站做了多種防采集的,留給喜歡折騰的同學(xué)去試試吧。?
  • */?
  • ?>
  • 轉(zhuǎn)載于:https://www.cnblogs.com/BeacherGong/archive/2013/05/07/3064225.html

    總結(jié)

    以上是生活随笔為你收集整理的PHP采集远程图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。