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过滤危险html代码
Aug 18 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
Oct 09 PHP
php写的简易聊天室代码
Jun 04 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
thinkPHP实现基于ajax的评论回复功能
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的explode和implode的使用说明
2011/07/17 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
React组件生命周期详解
2017/07/03 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
Python使用type动态创建类操作示例
2020/02/29 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
美国智能家居专家:tink
2019/06/04 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
测量工程专业求职信
2014/02/24 职场文书
庆祝教师节标语
2014/10/09 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
Python实现仓库管理系统
2022/05/30 Python
JS实现九宫格拼图游戏
2022/06/28 Javascript
Redis主从复制操作和配置详情
2022/09/23 Redis