php的图片下载函数

做采集中,需要用到php下载图片,在网上收集了一下,做了两个, 其中第一个用到readfile, 这个函数需要你的虚拟主机php.ini的设定allow_url_fopen = On , 例如我现在用的Dreamhost主机就是allow_url_fopen = Off,而在网上有教怎样打开Dreamhost的allow_url_fopen =On, 所以建议使用第二个函数,不过需要到网上下载snoopy类,这个使用sock, 不怕有问题.

以下为代码:
——————
函数1

function getImage($url,$filename=””) {
if(!$url) return false;

if(!$filename) {
$ext=strrchr(strtolower($url),”.”) ;
if($ext!=”.gif” && $ext!=”.jpg” && $ext!=”.png”) return false ;
$str=explode(‘/’,$url) ;
$filename=$str[count($str)-1] ;
//print $filename.”\n”;
}

ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$fp2=@fopen($filename, “a”) ;
fclose($fp2) ;

return $filename;
}

用法:

getImage(“http://www.lpfrx.com/wp-content/themes/ProSense/images/rss-feed-icon.jpg”);

—————————————————

函数2, 这个需要用到php的snoopy类

function downimage($furl)
{

$filename=””;
$str=explode(‘/’,$furl) ;
$filename= $str[count($str)-1] ;

$snoopyx = new Snoopy ;
$snoopyx->fetch($furl) ;

if($snoopyx->results !=””)
{
$handle = fopen($filename, ‘w’) ;
fwrite($handle, $snoopyx->results) ; //把抓取得内容写到 临时文件中
fclose($handle) ;
}
return $filename ;

}

用法:

downimag(“http://www.lpfrx.com/wp-content/themes/ProSense/images/rss-feed-icon.jpg”);

题外话:

写这些函数时, 把这些函数粘贴到这个wordpress编辑器时总不能发布,一发布或者保存就出错,跟住逐行一句一句代码写下去,发觉到在代码含有fopen那行时,结尾一加上 ; 号时就不能发布了,在fopen()再加个空格然后才写上 ; 就没有错误了,猜想可能这个Dreamhost空间加了关于fopen函数的过滤限制,所以出问题.

关于无聊人

一个无聊人而已
此条目发表在php分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注