关于直接采集远程机器图片之后再下载到我们本地其实非常的简单,我们通常会使用fopen 与 file_put_contents 或者高级点的curl来实现,下面我整理了几个比较好用的图片下载到本地例子,大家一起看看。
对于没有防盗链的图片
有防盗链的图片curlg($url, $fromurl);
$size = file_put_contents(getcwd() . $filepath . $filename . $ext, $re); //返回大小
return array(
$filepath . $filename . $ext,
$size
);
}
?>
批量采集代码:_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'] . " 前往下一个ID下载";
} else {
echo '保存出错,正在重试刷新。';
}
//dump($data2);
//dump($data);
}
?>
同时还可以生成缩略图哦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); //移动到文件夹里面
$imginfo = $Image->getImageInfo(getcwd() . $mulu . $thum_name);
//dump($imginfo);
$imgarr['cover_url'] = $reimg;
$imgarr['thum_url'] = $mulu . $thum_name;
$imgarr['thum_w'] = $imginfo['width'];
$imgarr['thum_h'] = $imginfo['height'];
return $imgarr;
}
?>
本文地址:
转载随意,但请附上文章地址:-)