-
php获取远程图片并把它保存到本地
在php中我们经常使用写一些简单的采集功能,这样可以自动把远程服务器的图片或资源直接采集保存到本地服务器中,下面我来给大家详细介绍远程图片并把它保存到本地几种方法.
例1,代码如下:
- /*
- *功能:php多种方式完美实现下载远程图片保存到本地
- *参数:文件url,保存文件名称,使用的下载方式
- *当保存文件名称为空时则使用远程文件原来的名称
- */
- function getImage($url,$filename='',$type=0){
- //开源代码phpfensi.com
- if($url==''){return false;}
- if($filename==''){
- $ext=strrchr($url,'.');
- if($ext!='.gif' && $ext!='.jpg'){return false;}
- $filename=time().$ext;
- }
- //文件保存路径
- 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($filename,'a');
- fwrite($fp2,$img);
- fclose($fp2);
- return $filename;
- }
例2,代码如下:
- <?php
- //
- // Function: 获取远程图片并把它保存到本地
- //
- //
- // 确定您有把文件写入本地服务器的权限
- //
- //
- // 变量说明:
- // $url 是远程图片的完整URL地址,不能为空。
- // $filename 是可选变量: 如果为空,本地文件名将基于时间和日期
- // 自动生成.
- function GrabImage($url,$filename="") {
- if($url==""):return false;endif;
- if($filename=="") {
- $ext=strrchr($url,".");
- if($ext!=".gif" && $ext!=".jpg"):return false;endif;
- $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("http://www.phpfensi.com","");
- if($img):echo '<pre><img src="'.$img.'"></pre>';else:echo "false";endif;
- ?>
dedecms中的,代码如下:
- if(!emptyempty($saveremoteimg))
- {
- $body = stripslashes($body);
- $img_array = array();
- preg_match_all("/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png))/isU",$body,$img_array);
- $img_array = array_unique($img_array[2]);
- set_time_limit(0);
- $imgUrl = $img_dir."/".strftime("%Y%m%d",time());
- $imgPath = $base_dir.$imgUrl;
- $milliSecond = strftime("%H%M%S",time());
- if(!is_dir($imgPath)) @mkdir($imgPath,0777);
- foreach($img_array as $key =>$value)
- {
- $value = trim($value);
- $get_file = @file_get_contents($value);
- $rndFileName = $imgPath."/".$milliSecond.$key.".".substr($value,-3,3);
- $fileurl = $imgUrl."/".$milliSecond.$key.".".substr($value,-3,3);
- if($get_file)
- {
- $fp = @fopen($rndFileName,"w");
- @fwrite($fp,$get_file);
- @fclose($fp);
- }
- $body = ereg_replace($value,$fileurl,$body);
- }
- $body = addslashes($body);
- }
- ?>
例4,代码如下:
- <?php
- //
- // Function: 获取远程图片并把它保存到本地
- //
- //
- // 确定您有把文件写入本地服务器的权限
- //
- //
- // 变量说明:
- // $url 是远程图片的完整URL地址,不能为空。
- // $filename 是可选变量: 如果为空,本地文件名将基于时间和日期// 自动生成.
- function GrabImage($url,$filename='') {
- if($url==''):return false;endif;
- if($filename=='') {
- $ext=strrchr($url,'.');
- if($ext!='.gif' && $ext!='.jpg'):return false;endif;$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('http://www.phpfensi.com/static/image/common/logo.png','');
- if($img){echo '<pre><img src='.$img.'></pre>';}else{echo 'false';}
- ?>
原文链接:http://www.phpfensi.com/php/20140828/4898.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式