欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Css图片批量下载小工具--saveimg1.5

发布时间:2023/12/8 编程问答 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。