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动态变静态原理
Nov 25 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
mayfish 数据入库验证代码
Apr 30 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
Aug 18 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
laravel邮件发送的实现代码示例
Jan 31 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魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
一份比较全的PHP面试题
2016/07/29 面试题
急诊科护士自我鉴定
2013/10/14 职场文书
项目副经理岗位职责
2013/12/30 职场文书
初级会计求职信范文
2014/02/15 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
征求意见函
2015/06/05 职场文书
机器人瓦力观后感
2015/06/12 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL