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输出缓存(output_buffering)的深入理解
Jun 13 PHP
php之Memcache学习笔记
Jun 17 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
PHP代码优化的53个细节
Mar 03 PHP
php导出CSV抽象类实例
Sep 24 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 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 adodb介绍
2009/03/19 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
下载糗事百科的内容_python版
2008/12/07 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
python实现各进制转换的总结大全
2017/06/18 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
python动态文本进度条的实例代码
2020/01/22 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python几种常见算法汇总
2020/06/02 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
外企测试工程师面试题
2015/02/01 面试题
优秀交警事迹材料
2014/01/26 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
Python实现抖音热搜定时爬取功能
2022/03/16 Python
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
Python中time标准库的使用教程
2022/04/13 Python