php下载图片的实例,PHP批量下载html与css中图片文件实例

最近一直很忙,遇到一个手工活,需要下载一些远程的图片,一共一百多张,如果通过手工一张一张的保存,也太耗费时间了,于是上网google了一把,找到PHP批量下载图片文件的方法,原文是出自平凡世界博客的一片关于如何使用PHP批量下载CSS文件中的图片的文章,经过研究改写了一下就可以使用了,方便快捷多了.

PHP批量下载图片文件代码:

set_time_limit(0);//设置PHP超时时间

$imagesURLArray=array_unique($imagesURLArray);

foreach($imagesURLArrayas$imagesURL) {

echo$imagesURL;

echo"

";

file_put_contents(basename($imagesURL),file_get_contents($imagesURL));

}

原理很简单,通过一个含有图片地址的数组循环,然后使用PHP的file_get_contents函数取得图片,在使用file_put_contents函数把图片保存下来.

注意:一定要加上设置PHP超时时间.

附上原文中通过php下载css中图片的代码:

/*

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($imagesURLArrayas$imagesURL) {

file_put_contents(basename($imagesURL),file_get_contents($imagesURL));

}

?>

后来又找到一个php批量下载图片文件,假如现在我现在发现一个网站上的图片保存方式是1001 – 1999目录下都存放着从1开始(数量不等)的.jpg图片,现在我决定用php的方法将图片按照自己需要的样式直接下载到本地.

假如图片开始地址为:http://image.vcphp.com/img/1001/1.jpg

这时我将1001处放到变量$id,1.jpg放到变量$num.jpg,保存的文件名为$id_$num.jpg,首先确保在此文件执行目录下面建一个名为img的并且可写的文件夹,代码如下:

$id= isset($_GET['id']) &&intval($_GET['id']) &&$_GET['id']>1000 ?$_GET['id'] : 1001;

$num= isset($_GET['num']) &&intval($_GET['num']) ?$_GET['num'] : 1;

$url="http://image.xxx.com/img/{$id}/{$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],'';

(责任编辑:最模板)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值