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 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
桌面中心(一)创建数据库
Oct 09 PHP
php桌面中心(一) 创建数据库
Mar 11 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
php printf输出格式使用说明
Dec 05 PHP
PHP url 加密解密函数代码
Aug 26 PHP
PHP连接MongoDB示例代码
Sep 06 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
php获取ajax的headers方法与内容实例
Dec 27 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输入流php://input实例讲解
2015/12/22 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
js定时器实例分享
2016/12/20 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
python怎么自定义捕获错误
2020/06/29 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
小学生成长感言
2014/01/30 职场文书
求职毕业生自荐书
2014/02/08 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
师德师风建设方案
2014/05/08 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
图解上海144收音机
2021/04/22 无线电
总结一些Java常用的加密算法
2021/06/11 Java/Android
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技