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 相关文章推荐
escape unescape的php下的实现方法
Apr 27 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
php版微信发红包接口用法示例
Sep 23 PHP
php pdo操作数据库示例
Mar 10 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
PDO::prepare讲解
Jan 29 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 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中的 == 运算符进行字符串比较
2006/11/26 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
php之XML转数组函数的详解
2013/06/07 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
js遍历td tr等html元素
2012/12/13 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
python获取一组汉字拼音首字母的方法
2015/07/01 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
vscode 远程调试python的方法
2017/12/01 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
给领导的致歉信范文
2014/01/13 职场文书
社区科普工作方案
2014/06/03 职场文书
历史学专业求职信
2014/06/19 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS