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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
php微信公众账号开发之前五个坑(一)
Sep 18 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
PHP实现微信提现功能
Sep 30 PHP
微信企业转账之入口类分装php代码
Oct 01 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 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
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
教研处工作方案
2014/05/26 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
神农溪导游词
2015/02/11 职场文书
材料采购员岗位职责
2015/04/03 职场文书
九不准学习心得体会
2016/01/23 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
详解非极大值抑制算法之Python实现
2021/06/28 Python
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android