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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
一些PHP写的小东西
Dec 06 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
PHP的基本常识小结
Jul 05 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
php中关于socket的系列函数总结
May 18 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
Nov 30 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 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中的8个魔术常量
2020/07/06 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
Javascript缓存API
2016/06/14 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
PyTorch的torch.cat用法
2020/06/28 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
大学生如何写自荐信
2014/01/08 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
网络营销计划书
2015/01/17 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
在职证明格式样本
2015/06/15 职场文书
个人更名证明
2015/06/23 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
Python超详细分步解析随机漫步
2022/03/17 Python
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers