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 相关文章推荐
一个连接两个不同MYSQL数据库的PHP程序
Oct 09 PHP
php对数组排序代码分享
Feb 24 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
PHP进程同步代码实例
Feb 12 PHP
php运行时动态创建函数的方法
Mar 16 PHP
PHP中的一些常用函数收集
May 26 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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速成大法
2015/01/30 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
python读写ini文件示例(python读写文件)
2014/03/25 Python
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python爬虫实例详解
2018/06/19 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
竞选大队长演讲稿
2014/04/29 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2015年春节标语口号
2014/12/09 职场文书
迎新生欢迎词
2015/01/23 职场文书
学校开除通知书
2015/04/25 职场文书
红色经典观后感
2015/06/18 职场文书
2019年教师入党申请书
2019/06/27 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
MySQL 四种连接和多表查询详解
2021/07/16 MySQL
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
基于docker安装zabbix的详细教程
2022/06/05 Servers