网页界面设计流程2012-05-02 14:22 php批量下载网页图片源代码 有GetAllPic.php、DownImage.class.php两个文件和data放置下载图片的文件夹。GetAllPic.php为主文件,DownImage.class.php为类文件
GetAllPic.php文件代码如下:
<?php
require_once 'DownImage.class.php';
?>
<html>
<head>
<title>下载网页中所有图片</title>
</head>
<body>
<form method="POST" action="GetAllPic.php">
网页URL:
<input type="text" name="url" size="80" />
<input type="submit" name="submit" value="提交" /><br />
<?php
//单击“提交”按钮后才有后面的图片下载处理
if($_POST['submit'] != NULL){
$url=$_POST['url'];
//分析网页的URL,取出网页所属的主机(host)URL,因为很多图片URL是相对路径,必须在前面加上主机的URL.
$rs=parse_url($url);
$main_url = $rs['host'];$baseurl = substr($url,0,strrpos($url,'/')+1);
/
/读取网页内容。在使用file_get_contents函数时,后面的两个参数是可选参数,例如如果使用代理服务器来连接Internet的话,那就必须带上$context参数,代理服务器的具
//体设置在选项变量$opts中,如$opts = array('http' => array('proxy'=>'tcp://www-proxy:10080','request_fulluri'=>true))来设置代理服务器选项。一般情况下后两个参数可以省略
$opts=array('http' => array('request_fulluri'=> true));
$context = stream_context_create($opts);
$message = file_get_contents($url,false, $context);
//$reg中设置正则表达式。
$reg = "/<img.*?src=\"(.*?)\".*?>/i";
//函数preg_match_all负责在字符串$message中到所有匹配正则表达式的字符串,并将结果保存在数组$matches中,如果匹配不成功,则数组的长度为0
preg_match_all($reg,$message,$matches);
html个人网页完整代码图片for($i=0; $i< count($matches[0]); $i++){
//取出所有匹配结果。$matches为多维数组,维数的多少与正则表达式中的小括弧“()”的多少有关,此处只出现了一对,则为2维数组,$matches[0]中始终保存的是匹配的字符串,而
//$matches[1]则保存的是匹配正则表达式第一对括弧所匹配的内容,此处即为图片的URL
$matches[1][$i]=strtolower($matches[1][$i]);
//如果图片为相对路径,则将其转换为全路径。有两种相对路径,第一种是,如果第一个字符为"/",那是相对于host来说的相对路径,此时只需要加上host的URL即可转化为完全的URL。
//第二种是,相对于当前页面来说的相对路径,必须加上当前URL(除了文件名外,即变量$baseurl中的值)
if(!strpos('a'.$matches[1][$i],'http')){
if(strpos('a'.$matches[1][$i],'/')==1)
$matches[1][$i]=''.$main_url.$matches[1][$i];
else $matches[1][$i]=$baseurl.$matches[1][$i];
}
}
//调用array_unique函数过滤重复的图片URL
$img_array=array_unique($matches[1]);
//实例化图片下载类GetImage
$Gimg = new DownImage();
for($i=0; $i< count($img_array); $i++){
//在source属性中设置下载目标图片
的URL,save_to中设置图片的保存目录。调用download方法开始下载,默认为使用cURL库进行下载,以$Gimg->download('gd')的形式调用download方法时,则使用图像函数方式进行图片下载。
$Gimg->source = $img_array[$i];
$Gimg->save_to = './data/';
$FILE = $Gimg->download();
}
echo "下载完毕";
}
?>
</form>
</body>
</html>
DownImage.class.php文件代码如下:
<?php
class DownImage {
var $source;//保存远程图片的URL
var $save_to;//初始值为本地图片的保存目录
var $set_extension;//是否指定扩展名的标志
var $quality;//下载后图片的品质(默认为100%)
//定义图片下载方法。参数为使用的方式标志,默认为使用cURL库进行图片下载
function download($method = 'curl')
{
weblogic数据源配置文件在哪//调用GD库中的GetImageSize函数,取得远程图片的信息,并从其中的mime元素中分离出图片的类型名$type
$info = @GetImageSize($this->source);
$mime = $info['mime'];
$type = substr(strrchr($mime, '/'), 1);
//根据图片类型的不同,决定不同的图像生成函数ImageCreateFromXXX,图像保存函数ImageXXX,以及图片扩展名
switch ($type){
case 'jpeg':
前端开发工程师简介$image_create_func = 'ImageCreateFromJPEG';
$image_save_func = 'ImageJPEG';
$new_image_ext = 'jpg';
$quality = isSet($this->quality) ? $this->quality : 100;
break;
case 'png':
$image_create_func = 'ImageCreateFromPNG';
$image_save_func = 'ImagePNG';
$new_image_ext = 'png';
$quality = isSet($this->quality) ? $this->quality : 0;
break;
case 'bmp':
$image_create_func = 'ImageCreateFromBMP';
$image_save_func = 'ImageBMP';
$new_image_ext = 'bmp';
break;
case 'gif':
$image_create_func = 'ImageCreateFromGIF';
$image_save_func = 'ImageGIF';
$new_image_ext = 'gif';
break;
case 'vnd.wap.wbmp':
$image_create_func = 'ImageCreateFromWBMP';
$image_save_func = 'ImageWBMP';
$new_image_ext = 'bmp';
break;
case 'xbm':
$image_create_func = 'ImageCreateFromXBM';
$image_save_func = 'ImageXBM';
$new_image_ext = 'xbm';
discuz资源模板break;
default:
$image_create_func = 'ImageCreateFromJPEG';
$image_save_func = 'ImageJPEG';
$new_image_ext = 'jpg';
}
//根据‘指定扩展名标志’set_extension属性来合成本地图片文件名
if(isSet($this->set_extension)){
$ext = strrchr($this->source, ".");
$strlen = strlen($ext);
$new_name = basename(substr($this->source, 0, -$strlen)).'.'.$new_image_ext;
}else{
$new_name = basename($this->source);
}
//生成本地图片文件路径
$save_to = $this->save_to.$new_name;
//图片下载方式为curl时,调用LoadImageCURL进行图片的下载
if($method == 'curl'){
$save_image = $this->LoadImageCURL($save_to);
//下载方式为gd时,调用与图片类型对应的GD图像进行图片下载。函数ImageCreateFromXXX用于读入远程图片文件,ImageXXX用于在新的文件中保存图像数据
}elseif($method == 'gd'){
$img = $image_create_func($this->source);
if(isSet($quality)){
$save_image = $image_save_fu
nc($img, $save_to, $quality);
}else{
$save_image = $image_save_func($img, $save_to);
}
}
return $save_image;
}
//定义利用cURL库进行图片下载的方法,参数为远程图片的URL。
function LoadImageCURL($save_to)
{
$ch = curl_init($this->source);//初始化curl,读入远程图片文件
$fp = fopen($save_to, "wb");//新建本地图片文件
//结合curl的各个参数,包括本地文件句柄,头信息有无标志,递归设置(启用时会将服务器返回的"Location:"放在header中递归时返回给服务器),设置超时限制
$options = array(CURLOPT_FILE => $fp,
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_TIMEOUT => 60);
curl_setopt_array($ch, $options);//设置curl选项
curl_exec($ch);//执行请求
安卓文字滚动代码curl_close($ch);//关闭curl句柄以及文件句柄
fclose($fp);
}
}
?>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论