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中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
详解php协程知识点
Sep 21 PHP
laravel 执行迁移回滚示例
Oct 23 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读取数据库信息的几种方法
2008/05/24 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
jquery随机展示头像代码
2011/12/21 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
python append、extend与insert的区别
2016/10/13 Python
点球小游戏python脚本
2018/05/22 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
django celery redis使用具体实践
2019/04/08 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
园长自我鉴定
2013/10/06 职场文书
外贸采购员求职的自我评价
2013/11/26 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
优秀教师先进事迹
2014/01/22 职场文书
个人委托书范本
2014/04/02 职场文书
大学社团计划书
2014/05/01 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
子女赡养老人协议书
2016/03/23 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB