關(guān)于直接采集遠(yuǎn)程機(jī)器圖片之后再下載到我們本地其實(shí)非常的簡(jiǎn)單,我們通常會(huì)使用fopen 與 file_put_contents 或者高級(jí)點(diǎn)的curl來(lái)實(shí)現(xiàn),下面我整理了幾個(gè)比較好用的圖片下載到本地例子,大家一起看看.
對(duì)于沒(méi)有防盜鏈的圖片,代碼如下:
<?php /* * 對(duì)于沒(méi)有防盜鏈的圖片 * $url 圖片地址 * $filename 圖片保存地址 * return 返回下載的圖片路徑和名稱,圖片大小 */ function GrabImage($url, $filepath, $filename = "") { if ($url == "") return false; $ext = strrchr($url, "."); if ($filename == "") { if ($ext != ".gif" && $ext != ".jpg" && $ext != ".png") return false; $filename = date("YmdHis"); } ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); // 圖片大小 !is_dir(getcwd() . $filepath) ? mkdir(getcwd() . $filepath) : null; //生成文件夾 $fp2 = fopen(getcwd() . $filepath . $filename . $ext, "a"); fwrite($fp2, $img); fclose($fp2); return array( $filepath . $filename . $ext, $size ); }
有防盜鏈的圖片, 代碼如下:
/* * 有防盜鏈的圖片 * $url 圖片地址 * $filename 圖片保存地址 * return 返回下載的圖片路徑和名稱,圖片大小 * $fromurl 來(lái)源URL,填寫(xiě)來(lái)源圖片網(wǎng)址可破解防盜鏈 */ function GrabImage2($url, $filepath, $filename = "", $fromurl) { if ($url == "") return false; $ext = strrchr($url, "."); if ($filename == "") { if ($ext != ".gif" && $ext != ".jpg" && $ext != ".png") return false; $filename = date("YmdHis"); } !is_dir(getcwd() . $filepath) ? mkdir(getcwd() . $filepath) : null; //生成文件夾 $re = $this->curlg($url, $fromurl); $size = file_put_contents(getcwd() . $filepath . $filename . $ext, $re); //返回大小 return array( $filepath . $filename . $ext, $size ); }
批量采集代碼:
/** * 批量下載圖片 */ public function downimg() { $keep = $this->_get("keep"); //1從緩存獲取2刪除緩存/重新緩存 $id = $this->_get("id"); $id = $id ? $id : 0; $nextid = $id + 1; if ($keep != 1) { $data = M('Cjlist')->where("status=1")->select(); S("keepcjdata", $data, 3600); } else { $data = S("keepcjdata"); } $endid = count($data); //echo $id; //echo $endid; if ($endid == $id) { exit('所有圖片下載完成!'); } //echo $endid; $data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']); //echo $data[$id]['thum_url']; $data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'], 'thum_'); //中型圖片type $data2['id'] = $data[$id]['id']; if (!$data2['thum_url'] || !$data2['cover_imgurl']) { $data2['status'] = - 1; } else { $data2['status'] = 2; } $res = M('Cjlist')->save($data2); //$this->echosql(); if ($res) { echo '下載完成ID:' . $data2['id'] . " 前往下一個(gè)ID下載<script>window.location.href='" . U('Index/downimg') . "/keep/1/id/" . $nextid . "'</script>"; } else { echo '保存出錯(cuò),正在重試刷新。<script>window.location.reload()</script>'; } //dump($data2); //dump($data); }
同時(shí)還可以生成縮略圖, 代碼如下:
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
/* *圖片采集保存本地生成縮略圖 * * */ public function imgdown($picurl = 'http://p0.so.qhimg.com/t0129f40df5810dfaa5.jpg', $fromurl = 'http://image.so.com') { $mulu = "/" . date("YmdH", time()) . "/"; $reimg = $this->GrabImage2($picurl, $mulu, time() , $fromurl); //$img = file_get_contents($picurl); //echo file_put_contents('222.jpg',$img); //exit; //$reimg="/20140529/1401333398.jpg"; //dump($reimg); //exit; if ($reimg[1] <= 0) { exit("下載圖片失敗"); } $reimg = $reimg[0]; import('ORG.Util.Image'); $Image = new Image(); $imgurl = getcwd() . $reimg; $ext = strrchr($imgurl, "."); $thum_name = $Image->thumb($imgurl, "thum_" . time() . $ext, '', '288', '432'); rename(getcwd() . "/" . $thum_name, getcwd() . $mulu . $thum_name); //移動(dòng)到文件夾里面 $imginfo = $Image->getImageInfo(getcwd() . $mulu . $thum_name); //dump($imginfo);//開(kāi)源代碼phprm.com $imgarr['cover_url'] = $reimg; $imgarr['thum_url'] = $mulu . $thum_name; $imgarr['thum_w'] = $imginfo['width']; $imgarr['thum_h'] = $imginfo['height']; return $imgarr; }
PHP怎么學(xué)習(xí)?PHP怎么入門(mén)?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門(mén)到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.400tele.com.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)