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 相关文章推荐
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
PHP下10件你也许并不了解的事情
Sep 11 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
php抓取页面的几种方法详解
Jun 17 PHP
php实现递归与无限分类的方法
Feb 16 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
微信公众号之主动给用户发送消息功能
Jun 22 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 cookies中删除的一般赋值方法
2011/05/07 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
用js重建星际争霸
2006/12/22 Javascript
Javascript Global对象
2009/08/13 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
python Django批量导入不重复数据
2016/03/25 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
PyQt5实现登录页面
2020/05/30 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
人力资源专员自我评价怎么写
2013/09/19 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
119消防日活动总结
2014/08/29 职场文书
学校联谊协议书
2014/09/16 职场文书
违纪学生保证书
2015/02/27 职场文书
大客户经理岗位职责
2015/04/09 职场文书
交通事故被告代理词
2015/05/23 职场文书
活动宣传稿范文
2015/07/23 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python