用php采集远程图片并保存到本地服务器


手头有一个正在进行的项目里,需要采集图片的功能,但是网络上大多数代码都通用性不够,很多非明确.jpg或.gif的网址,不能正常采集。所以写了下面这两函数。一个是主体函数,一个是被调用的函数。

主体函数get_image_byurl传入网址参数,网址可以是完整的.jpg文件名,也可以是非完整的图片文件名,比如一些验证码,防采集图片路径。第二个参数是文件名,如果不指定,就自已简单生成一个。函数返回最终的文件名,可将文件名存入数据库或返馈给用户。(本文由 www.vsosuo.com原创,转载请保留)

function get_image_byurl($url, $filename=”") {

if ($url == “”) { return false; }

$ext = strrchr($url, “.”);  //得到图片的扩展名

if($ext != “.gif” && $ext != “.jpg” && $ext != “.bmp”) { $ext = “.jpg”; }

if($filename == “”) { $filename = time() . $ext; }  //以时间另起名,在此可指定相对目录 ,未指定则表示同php脚本执行的当前目录

//以流的形式保存图片

$write_fd = @fopen($filename,”a”);

@fwrite($write_fd, CurlGet($url));  //将采集来的远程数据写入本地文件

@fclose($write_fd);

return($filename);  //返回文件名

}

//远程获取

function CurlGet($url){

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HEADER, false);

//curl_setopt($curl, CURLOPT_REFERER,$url);

curl_setopt($curl, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE 6.0; SeaPort/1.2; Windows NT 5.1; SV1; InfoPath.2)”);  //模拟浏览器访问

curl_setopt($curl, CURLOPT_COOKIEJAR, ‘cookie.txt’);

curl_setopt($curl, CURLOPT_COOKIEFILE, ‘cookie.txt’);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);

$values = curl_exec($curl);

curl_close($curl);

return($values);

}

调用示例:$_saveto = get_image_byurl(‘http://www.vsosuo.com/wp-content/uploads/2012/01/617_b9b1bae5_3f45_43c0_96a0_95c83fd8561e_0.jpg’);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM