php获取远程图片并下载保存到本地的方法分析


Posted in PHP onOctober 08, 2016

本文实例讲述了php获取远程图片并下载保存到本地的方法。分享给大家供大家参考,具体如下:

远程图片指的是远端服务器上的数据我们可以通过php的许多函数来读取下载了,这里整理了两个可以自动下载远程图片并下载保存到本地的例子。

例1,可以自动识别图片类型然后进行对应的保存

/*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/
function getImage($url,$save_dir='',$filename='',$type=0){
  if(trim($url)==''){
 return array('file_name'=>'','save_path'=>'','error'=>1);
 }
 if(trim($save_dir)==''){
 $save_dir='./';
 }
  if(trim($filename)==''){//保存文件名
    $ext=strrchr($url,'.');
    if($ext!='.gif'&&$ext!='.jpg'){
  return array('file_name'=>'','save_path'=>'','error'=>3);
 }
    $filename=time().$ext;
  }
 if(0!==strrpos($save_dir,'/')){
 $save_dir.='/';
 }
 //创建保存目录
 if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){
 return array('file_name'=>'','save_path'=>'','error'=>5);
 }
  //获取远程文件所采用的方法
  if($type){
 $ch=curl_init();
 $timeout=5;
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
 $img=curl_exec($ch);
 curl_close($ch);
  }else{
   ob_start();
   readfile($url);
   $img=ob_get_contents();
   ob_end_clean();
  }
  //$size=strlen($img);
  //文件大小
  $fp2=@fopen($save_dir.$filename,'a');
  fwrite($fp2,$img);
  fclose($fp2);
 unset($img,$url);
  return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0);
}

例2,如果不是图片会自动跳过

<?php
function GrabImage($url, $filename = "") {
 if ($url == ""):return false;
 endif;
 //如果$url地址为空,直接退出
 if ($filename == "") {
 //如果没有指定新的文件名
 $ext = strrchr($url, ".");
 //得到$url的图片格式
 if ($ext != ".gif" && $ext != ".jpg"):return false;
 endif;
 //如果图片格式不为.gif或者.jpg,直接退出
 $filename = date("dMYHis") . $ext;
 //用天月面时分秒来命名新的文件名
 }
 ob_start();//打开输出
 readfile($url);//输出图片文件
 $img = ob_get_contents();//得到浏览器输出
 ob_end_clean();//清除输出并关闭
 $size = strlen($img);//得到图片大小
 $fp2 = @fopen($filename, "a");
 fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名
 fclose($fp2);
 return $filename;//返回新的文件名
}
$img = GrabImage("https://3water.com /6648d73db0edd1e89f3d62f7.jpg", "");
if ($img):echo '<pre><img src="' . $img . '"></pre>';
//如果返回值为真,这显示已经采集到服务器上的图片
else:echo "false";
endif;
//否则,输出采集失败
?>

其实上面的下载方式小编最喜欢的不是这两个而是curl保存异步下载图片会比较好。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
Drupal7中常用的数据库操作实例
Mar 02 PHP
php实现天干地支计算器示例
Mar 14 PHP
php开发微信支付获取用户地址
Oct 04 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
php中Redis的应用--消息传递
Mar 28 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
Oct 08 #PHP
php文件类型MIME对照表(比较全)
Oct 07 #PHP
php中文字符串截取多种方法汇总
Oct 06 #PHP
PHP微信红包生成代码分享
Oct 06 #PHP
php下载文件超时时间的设置方法
Oct 06 #PHP
详谈php静态方法及普通方法的区别
Oct 04 #PHP
php操作路径的经典方法(必看篇)
Oct 04 #PHP
You might like
国内php原创论坛
2006/10/09 PHP
类的另类用法--数据的封装
2006/10/09 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
护士自荐信
2013/10/25 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
促销活动总结范文
2014/04/30 职场文书
微电影大赛策划方案
2014/06/05 职场文书
企业文化口号
2014/06/12 职场文书
2014年防汛工作总结
2014/12/08 职场文书
通知范文怎么写
2015/04/16 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书