gd库图片下载类实现下载网页所有图片的php代码


Posted in PHP onAugust 20, 2012

php代码如下:

<?php 
header("Content-type:text/html ; charset=utf-8"); 
if (!empty($_POST['submit'])){ 
$url = $_POST['url']; 
//为了获取相对路径的图片所做的操作 
$url_fields = parse_url($url); 
$main_url = $url_fields['host']; 
$base_url = substr($url,0,strrpos($url, '/')+1); 
//获取网页内容 
//设置代理服务器 
$opts = array('http'=>array('request_fulluri'=>true)); 
$context = stream_context_create($opts); 
$content = file_get_contents($url,false,$context); 
//匹配img标签,将所有匹配字符串保存到数组$matches 
$reg = "/<img.*?src=\"(.*?)\".*?>/i"; 
preg_match_all($reg, $content, $matches); 
$count = count($matches[0]); 
for ($i=0; $i<$count; $i++){ 
/*将所有图片的url转换为小写 
*$matches[1][$i] = strtolower($matches[1][$i]); 
*/ 
//如果图片为相对路径就转化为全路径 
if (!strpos('a'.$matches[1][$i], 'http')){ 
//因为'/'是第0个位置 
if (strpos('a'.$matches[1][$i], '/')){ 
$matches[1][$i] = 'http://'.$main_url.$matches[1][$i]; 
}else{ 
$matches[1][$i] = $base_url.$matches[1][$i]; 
} 
} 
} 
//过滤重复的图片 
$img_arr = array_unique($matches[1]); 
//实例化图片下载类 
$getImg = new DownImage(); 
$url_count = count($img_arr); 
for ($i=0; $i<$url_count; $i++){ 
$getImg->source = $img_arr[$i]; 
$getImg->save_address = './pic/'; 
$file = $getImg->download(); 
} 
echo "下载完成!哈哈,简单吧!"; 
} 
class DownImage{ 
public $source;//远程图片URL 
public $save_address;//保存本地地址 
public $set_extension; //设置图片扩展名 
public $quality; //图片的质量(0~100,100最佳,默认75左右) 
//下载方法(选用GD库图片下载) 
public function download(){ 
//获取远程图片信息 
$info = @getimagesize($this->source); 
//获取图片扩展名 
$mime = $info['mime']; 
$type = substr(strrchr($mime, '/'), 1); 
//不同的图片类型选择不同的图片生成和保存函数 
switch($type){ 
case 'jpeg': 
$img_create_func = 'imagecreatefromjpeg'; 
$img_save_func = 'imagejpeg'; 
$new_img_ext = 'jpg'; 
$image_quality = isset($this->quality) ? $this->quality : 100; 
break; 
case 'png': 
$img_create_func = 'imagecreatefrompng'; 
$img_save_func = 'imagepng'; 
$new_img_ext = 'png'; 
break; 
case 'bmp': 
$img_create_func = 'imagecreatefrombmp'; 
$img_save_func = 'imagebmp'; 
$new_img_ext = 'bmp'; 
break; 
case 'gif': 
$img_create_func = 'imagecreatefromgif'; 
$img_save_func = 'imagegif'; 
$new_img_ext = 'gif'; 
break; 
case 'vnd.wap.wbmp': 
$img_create_func = 'imagecreatefromwbmp'; 
$img_save_func = 'imagewbmp'; 
$new_img_ext = 'bmp'; 
break; 
case 'xbm': 
$img_create_func = 'imagecreatefromxbm'; 
$img_save_func = 'imagexbm'; 
$new_img_ext = 'xbm'; 
break; 
default: 
$img_create_func = 'imagecreatefromjpeg'; 
$img_save_func = 'imagejpeg'; 
$new_img_ext = 'jpg'; 
} 
//根据是否设置扩展名来合成本地文件名 
if (isset($this->set_extension)){ 
$ext = strrchr($this->source,"."); 
$strlen = strlen($ext); 
$newname = basename(substr($this->source,0,-$strlen)).'.'.$new_img_ext; 
}else{ 
$newname = basename($this->source); 
} //生成本地文件路径 
$save_address = $this->save_address.$newname; 
$img = @$img_create_func($this->source); 
if (isset($image_quality)){ 
$save_img = @$img_save_func($img,$save_address,$image_quality); 
}else{ 
$save_img = @$img_save_func($img,$save_address); 
} 
return $save_img; 
} 
} 
?> 
<form method="POST" action=""> 
远程url地址:<input type="text" name="url" size=30 /> 
<input type="submit" name="submit" value="下载该页面所有图片" /> 
</form>

运行结果如图:

gd库图片下载类实现下载网页所有图片的php代码下载的图片本例中保存在当前目录的pic文件夹下!

PHP 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
php 随机生成10位字符代码
Mar 26 PHP
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
PHP mysql与mysqli事务使用说明 分享
Aug 17 PHP
2014过年倒计时示例
Jan 31 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
php通过curl模拟登陆DZ论坛
May 11 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
php 函数使用可变数量的参数方法
May 02 PHP
自己在做项目过程中学到的PHP知识收集
Aug 20 #PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 #PHP
PHP系列学习之日期函数使用介绍
Aug 18 #PHP
PHP中extract()函数的定义和用法
Aug 17 #PHP
Linux下实现PHP多进程的方法分享
Aug 16 #PHP
PHP基础知识回顾
Aug 16 #PHP
php开发文档 会员收费1期
Aug 14 #PHP
You might like
文件系统基本操作类
2006/11/23 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
PHP实现文件下载详解
2014/11/27 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
理解javascript回调函数
2014/12/28 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
详解使用React制作一个模态框
2019/03/14 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python greenlet实现原理和使用示例
2014/09/24 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Django实现学生管理系统
2019/02/26 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
Python的几种主动结束程序方式
2019/11/22 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
创建文明城市标语
2014/06/16 职场文书
工作检讨书500字
2014/10/19 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
标准发言稿结尾
2019/07/18 职场文书
MySQL开启事务的方式
2021/06/26 MySQL
HTML+JS实现在线朗读器
2022/02/15 Javascript
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs