Css图片批量下载小工具--saveimg1.5
备用下载地址:http://download.csdn.net/detail/zhoumengkang/4949519
1.5只是将代码进行有一些自以为是的优化,实际说应该是表面上的代码量减少了,但不知道效率是不是真的提高了,当然所有我的困惑我都会做好笔记,一一消化的!
通过不断的实际测试,我也明白了为什么别人开发软件的时候总要修复BUG,为什么要升级了。
这段时间,收获真的不少,不仅是以前学的一些知识的整合、巩固,也发现了以前觉得非常不起眼的小知识点的重要性。
经常会有“哦,原来这个东西还有作用啊!(窃喜)真是太好了,这不正是我需要的吗?”;
这段时间,心里想的只有一件事,那就是怎么样做才能使得代码更加高效更加简洁。
刷牙、做梦、走路总会在无意识间就会对某个小细节想到了一种新的处理方式,或许是代码少了1行,或许是换了一种新方法,或许是提交给下个函数的时候少了一个参数。
我都会迫不及待的打开电脑来测试,即使这然一切在别人看来是纯农民工纯低级的工作!
2012.12.13
1.也不知道算不算代码优化,不知道速度上有没有提升
-----------------------------------
mkdir_for_img.php 原代码:
-----------------------------------
function mkdirforimg($img){$protocol='/http:\/\//';$replace='web/';$img['url']=preg_replace($protocol,$replace,$img['url']);for($i=1;$i<$img['num'];$i++){$url[$i]=$img['url'][$i];//拿出每张图片的地址 $y[$i]=explode('/',$url[$i]);//把保存的目录的保存到数组中去foreach($y[$i] as $key =>$value2);//获取目录的深度for($n=0;$n<$key;$n++){//循环的时候除去数组的最后一位(最后一位为图片,不是文件夹)$path.=$y[$i][$n].'/';if(!file_exists($path)){if(mkdir($path,0777,true)){echo $path.'<font color="green">路径创建成功</font><br/>';};}}$path=null;//清空$path} }----------------------------------- mkdir_for_img.php 新代码:
-----------------------------------
代码简化地方,使用foreach直接遍历整个数组,省略了上一个版本中对数组元素个数的依赖性
也许foreach的内部代码先对foreach进行了出栈做while判断,然后确定其元素个数,再使用for循环;
倘若是那样,那么我的代码优化,速度上反而使得脚本速度更加慢了。
function mkdirforimg($img){$protocol='/http:\/\//';$replace='web/';$img=preg_replace($protocol,$replace,$img);foreach($img as $k=>$v){$a=dirname($v);if(!file_exists($a)){if(mkdir($a,0777,true)){echo $a.'<font color="green">路径创建成功</font><br/>';};}} }
-----------------------------------
get_img_url.php 原代码:
-----------------------------------
function getimgurl($filename,$baseurl){$file=fopen($filename,'r');while(!feof($file)){$content.=fread($file,1024);}echo '<pre>';//将整个css文件以字符串保存,然后以“url(”作为标记切割成数组$arr=explode('url(',$content);//获取该数组的个数,即整个css文件使用到url图片的个数(有可能有部分图片重复,后面保存的时候再判断排除)foreach($arr as $key =>$value);$img['num']=$key+1;for($i=1;$i<$img['num'];$i++){//取出上面数组中的每个元素$x=$arr[$i];//截取反括号前面的内容,即为图片地址$y=explode(')',$x);//测试发现部分网站的css的url标签中使用了""和'',要考虑到所有网站的情况,所以得删除两段的引号$z[$i]=trim($y[0],'"');$z[$i]=trim($z[$i],"'");//再清除图片地址后面跟的参数,图片后面为什么跟参数,不明白,但是例如phpwind的图片就经常有?后面跟一些日期$param='/\?/';$res=preg_match($param,$z[$i],$match);if($res==1){$change=explode('?',$z[$i]);$z[$i]=$change[0];}#######下面需要考虑图片地址在url的引用方法############ 1 images/xxx.jpg ###################### 2 ./images/xxx.jpg ###################### 3 ../images/xxx.jpg ###################### 4 /images/xxx.jpg ###################### 5 http://.xxx.jpg ###############$check=preg_match('/^http/',$z[$i]);if($check==1){//直接保存图片地址$img['url']=$z[$i];}else{$check2=preg_match('/^\//',$z[$i]);if($check2==1){$z[$i]=$baseurl[1].$z[$i];//是第4种情况,直接与域名拼接}else{$z[$i]=$baseurl[0].'/'.$z[$i];//与css所在文件地址拼接}}}$a=array_unique($z);$img['url']=$a;$n=0;$b=array();foreach($a as $v){$n++;array_push($b,$n);}$img['num']=$n+1;$img['url']=array_combine($b,$a);print_r($img['url']);return $img; }-----------------------------------
get_img_url.php 新代码:
-----------------------------------
function getimgurl($filename,$baseurl){$file=fopen($filename,'r');while(!feof($file)){$content.=fread($file,1024);}echo '<pre>';$arr=explode('url(',$content);foreach($arr as $k => &$v){$a=explode(')',$v);$v=trim($a[0],'"');$v=trim($v,"'");$param='/\?/';$res=preg_match($param,$v,$match);if($res==1){$change=explode('?',$v);$v=$change[0];}$check=preg_match('/^http/',$v);if($check==1){//直接保存图片地址continue;}else{$check2=preg_match('/^\//',$v);if($check2==1){$v=$baseurl[1].$v;//是第4种情况,直接与域名拼接}else{$v=$baseurl[0].'/'.$v;//与css所在文件地址拼接}}}array_shift($arr);$img=array_unique($arr);print_r($img);return $img; }-----------------------------------
saveimg.php 原代码:
-----------------------------------
function saveimg($img){$protocol='/http:\/\//';$replace='web/';$filename=preg_replace($protocol,$replace,$img['url']); //图片保存路径for($i=1;$i<$img['num'];$i++){$b=file_get_contents($img['url'][$i]);$c=file_put_contents($filename[$i],$b);if($c!==0){echo $filename[$i].'<font color="green">下载成功</font><br/>';}else{echo $filename[$i].'<font color="red">下载失败</font><br/>';}} }-----------------------------------
saveimg.php 新代码:
-----------------------------------
function saveimg($img){$protocol='/http:\/\//';$replace='web/';$filename=preg_replace($protocol,$replace,$img); //图片保存路径foreach($img as $i=>$v){$b=file_get_contents($v);$c=file_put_contents($filename[$i],$b);if($c!==0){echo $filename[$i].'<font color="green">下载成功</font><br/>';}else{echo $filename[$i].'<font color="red">下载失败</font><br/>';}} }
总结
以上是生活随笔为你收集整理的Css图片批量下载小工具--saveimg1.5的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Vue学习之页面起始页设置
- 下一篇: webgis技术在智慧城市综合治理(9+