php将远程图片保存到本地实例(循环存储多图)

之前一直使用phpcms自带的采集功能,只需要写下采集规则即可,现在需求改变,需要一些自定义的东西,需要整合到thinkphp里面,所以从头开始搞这个,花了点时间,参考了下网上的教程,php代码

<?php
function SaveImg($url){
	$imgurl = file_get_contents($url);
	$start = strpos($imgurl, "<div class=\"con-desc\">");
	$end = strpos( $imgurl, "<div class=\"mt14 conWrapAd\">");
	$length = $end - $start;
	$item = substr($imgurl, $start, $length);
	$reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif)).*?>/';
	preg_match_all($reg_tag, $item, $imgurl);
	$img = $imgurl[1][0];
	return $img;
}
function GrabImage($url, $filename = "") {
	if ($url == ""){
		return false;
	}
	if ($filename == "") {
		//如果没有指定新的文件名
		$ext = strrchr($url, ".");
		//得到$url的图片格式
		if ($ext != ".gif" && $ext != ".jpg"){
			return false;
		}else{
			$filename = date("Ymdhis").$ext;			
		}
 	}
 	ob_start();//打开输出
 	readfile($url);//输出图片文件
 	$img = ob_get_contents();//得到浏览器输出
 	ob_end_clean();//清除输出并关闭
 	$size = strlen($img);//得到图片大小
 	$fp2 = @fopen("img/".$filename, "a");
 	fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名
 	fclose($fp2);
 	return $filename;//返回新的文件名
}

if($_POST['sub']){
	foreach ($_POST['url'] as $k => $v) {
		$img = GrabImage(SaveImg($v), "");
		if($img){
			echo "采集成功,图片已保存,文件名字为".$img."<br />";
		}else{
			echo "采集失败!<br />";
		}
		sleep(1);
	}
}
?>

html代码

<div class="list">
<form action="" method="post">
<input type="text" name="pagenum" id="pagenum" value="" />
<input type="button" name="generate" id="generate" value="生成列表" />
<input type="submit" name="sub" id="btn" value="下载远程图片" /><br />
<input type="text" name="url[]" id="url" value="" />
</form>
</div>

js代码

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(function(){
	$("#generate").click(function(){
		var num = $("#pagenum").val();
		var arr = $("#url").val().split(".html");
		for (var i = 2; i <= num; i++) {
			$("#url").before('<input type="text" name="url[]" id="url" value="'+ arr[0] + '_'+ i +'.html" /><br />');
		}
	});
})
</script>

简单样式表

*{padding:0;border:0;margin:0;}
html body{font-size:12px;color:#999;}
a,a:hover{text-decoration:none;}
.list{padding:5px;overflow:hidden;}
input{width:400px;height:30px;padding-left:5px;line-height:30px;border:1px solid #ddd;margin:5px;border-radius:5px;}
#pagenum,#generate,#btn{width:120px;}

一个简单的表单提交网站页面地址,从页面抓取图片然后保存到本地!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/400.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。