PHP 抓取网页图片并且另存为的实现代码


Posted in PHP onMarch 24, 2010

下面是源代码,及其相关解释

<?php 
//URL是远程的完整图片地址,不能为空, $filename 是另存为的图片名字 
//默认把图片放在以此脚本相同的目录里 
function GrabImage($url, $filename=""){ 
//$url 为空则返回 false; 
if($url == ""){return false;} 
$ext = strrchr($url, ".");//得到图片的扩展名 
if($ext != ".gif" && $ext != ".jpg" && $ext != ".bmp"){echo "格式不支持!";return false;} 
if($filename == ""){$filename = time()."$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; 
} 
//测试 
GrabImage("https://3water.com/images/logo.gif", "as.gif"); 
?>

ob_start : 打开输出缓冲
This function will turn output buffering on. While output buffering is active no output is sent from the script (other than headers), instead the output is stored in an internal buffer. (输出是在内部缓冲储存)
//
readfile : 读入一个文件并写入到输出缓冲
返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。
//

ob_get_contents : Return the contents of the output buffer(返回输出缓冲的内容)
This will return the contents of the output buffer without clearing it or FALSE, if output buffering isn't active. (如果输出缓冲没有活动(打开),则返回 FALSE)
//
ob_end_clean() : Clean (erase) the output buffer and turn off output buffering(清除输出缓冲)
This function discards(丢弃) the contents of the topmost output buffer and turns off this output buffering.(丢弃并且关掉) If you want to further process the buffer's contents you have to call ob_get_contents() before ob_end_clean() as the buffer contents are discarded when ob_end_clean() is called. (如果要用缓冲内容,则在清理输出缓冲之前要先调用 ob_get_contents())The function returns TRUE when it successfully discarded one buffer and FALSE otherwise. Reasons for failure are first that you called the function without an active buffer or that for some reason a buffer could not be deleted (possible for special buffer).

PHP 相关文章推荐
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
php中stdClass的用法分析
Feb 27 PHP
php实现的任意进制互转类分享
Jul 07 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
PHP7数组的底层实现示例
Aug 25 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
Cakephp 执行主要流程
Mar 24 #PHP
php中的观察者模式
Mar 24 #PHP
PHP 获取远程文件内容的函数代码
Mar 24 #PHP
PHP中基本符号及使用方法
Mar 23 #PHP
PHP技术开发技巧分享
Mar 23 #PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 #PHP
PHP5 字符串处理函数大全
Mar 23 #PHP
You might like
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python入门教程之运算符与控制流
2016/08/17 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
python os模块在系统管理中的应用
2020/06/22 Python
python 制作网站小说下载器
2021/02/20 Python
error和exception有什么区别
2012/10/02 面试题
优秀士兵个人事迹材料
2014/01/19 职场文书
移风易俗倡议书
2014/04/15 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
户籍证明格式
2014/09/15 职场文书
校园广播站开场白
2015/06/01 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python