php中使用gd库实现远程图片下载实例


Posted in PHP onMay 12, 2015

因为今天想写个远程下载图片的类,提前热身写了个php gd库实现远程图片下载功能,当然curl实现更好,php gd库实现远程图片下载功能主要使用gd库的两个函数ImageCreateFromXXX()用于生成图片函数和ImageXXX函数,XXX表示不同图片的扩展名,所以你要想办法获取远程图片的扩展名了,附上php代码如下:

<?php
header("Content-type:text/html ; charset=utf-8");
 
if (!empty($_POST['submit'])){
 $url = $_POST['url'];
 $pictureName = $_POST['pictureName'];
 $img = getPicture($url,$pictureName);
 echo '<pre><img src="'.$img.'"></pre>';
 }
function getPicture($url,$pictureName){
 if ($url == "") return false;
 //获取图片的扩展名
 $info = getimagesize($url);
 $mime = $info['mime'];
 $type = substr(strrchr($mime,'/'), 1);
 //不同的图片类型选择不同的图片生成和保存函数
 switch($type){
 case 'jpeg':
  $img_create_func = 'imagecreatefromjpeg';
  $img_save_func = 'imagejpeg';
  $new_img_ext = 'jpg';
  break;
 case 'png':
  $img_create_func = 'imagecreatefrompng';
  $img_save_func = 'imagepng';
  $new_img_ext = 'png';
  break;
 case 'bmp':
  $img_create_func = 'imagecreatefrombmp';
  $img_save_func = 'imagebmp';
  $new_img_ext = 'bmp';
  break;
 case 'gif':
  $img_create_func = 'imagecreatefromgif';
  $img_save_func = 'imagegif';
  $new_img_ext = 'gif';
  break;
 case 'vnd.wap.wbmp':
  $img_create_func = 'imagecreatefromwbmp';
  $img_save_func = 'imagewbmp';
  $new_img_ext = 'bmp';
  break;
 case 'xbm':
  $img_create_func = 'imagecreatefromxbm';
  $img_save_func = 'imagexbm';
  $new_img_ext = 'xbm';
  break;
 default:
  $img_create_func = 'imagecreatefromjpeg';
  $img_save_func = 'imagejpeg';
  $new_img_ext = 'jpg';   
 }
 if ($pictureName == ""){
 $pictureName = time().".{$new_img_ext}";
 }else{
 $pictureName = $pictureName.".{$new_img_ext}";
 }
 $src_im = $img_create_func($url); //由url创建新图片
 $img_save_func($src_im, $pictureName); //输出文件到文件
 return $pictureName;
}
 
?>
<form method="POST" action="">
远程url地址:<input type="text" name="url" size=20 /><br />
文件名称:<input type="text" name="pictureName" size=20 />
<input type="submit" name="submit" value="下载" />
</form>

运行结果如下图:(图片自动保存在当前文件目录,不明白的可以留言)

php中使用gd库实现远程图片下载实例

PHP 相关文章推荐
PHP实现的功能是显示8条基色色带
Oct 09 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
PHP查询快递信息的方法
Mar 07 PHP
简述php环境搭建与配置
Dec 05 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
PHP count_chars()函数讲解
Feb 14 PHP
PHP实现递归的三种方法
Jul 04 PHP
PHP输入输出流学习笔记
May 12 #PHP
PHP SPL标准库之SplFixedArray使用实例
May 12 #PHP
php中get_defined_constants函数用法实例分析
May 12 #PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 #PHP
php遍历类中包含的所有元素的方法
May 12 #PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 #PHP
php实现每天自动变换随机问候语的方法
May 12 #PHP
You might like
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP与SQL注入攻击[三]
2007/04/17 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
python中sys.argv函数精简概括
2018/07/08 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
演讲主持词
2014/03/18 职场文书
三年级学生期末评语
2014/12/26 职场文书
数学教师求职信范文
2015/03/20 职场文书
银行实习推荐信
2015/03/27 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis