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中显示格式化的用户输入
Oct 09 PHP
构建简单的Webmail系统
Oct 09 PHP
php连接mysql数据库代码
Mar 10 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
PHP错误提示的关闭方法详解
Jun 23 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
详解JavaScript函数
2015/12/01 Javascript
javascript实现拖放效果
2015/12/16 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python爬豆瓣电影实例
2018/02/23 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
python3注册全局热键的实现
2020/03/22 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
英语商务邀请函范文
2014/01/16 职场文书
英语教学随笔感言
2014/02/20 职场文书
2015年复活节活动总结
2015/02/27 职场文书
2015年派出所工作总结
2015/04/24 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
毕业赠语大全
2015/06/23 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
MySQL学习必备条件查询数据
2022/03/25 MySQL
Go语言编译原理之源码调试
2022/08/05 Golang