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 AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
php 执行系统命令的方法
Jul 07 PHP
php empty函数 使用说明
Aug 10 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
PHP 登录完成后如何跳转上一访问页面
Jan 14 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
Yii2数据库操作常用方法小结
May 04 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 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编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
JS猜数字游戏实例讲解
2020/06/30 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
用Python的SimPy库简化复杂的编程模型的介绍
2015/04/13 Python
python中for用来遍历range函数的方法
2018/06/08 Python
python障碍式期权定价公式
2019/07/19 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
AURALog面试题软件测试方面
2013/10/22 面试题
Java语言程序设计测试题判断题部分
2013/01/06 面试题
幼儿园园长自我鉴定
2013/10/22 职场文书
学习两会精神心得范文
2014/03/17 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
综治工作汇报材料
2014/10/27 职场文书
新员工试用期自我评价
2015/03/10 职场文书
热血教师观后感
2015/06/10 职场文书
钢琴师观后感
2015/06/12 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书