PHP基于GD库实现的生成图片缩略图函数示例


Posted in PHP onJuly 05, 2017

本文实例讲述了PHP基于GD库实现的生成图片缩略图函数。分享给大家供大家参考,具体如下:

<?php
/**
 * 生成缩略图函数(支持图片格式:gif、jpeg、png和bmp)
 * @author ruxing.li
 * @param string $src   源图片路径
 * @param int  $width  缩略图宽度(只指定高度时进行等比缩放)
 * @param int  $width  缩略图高度(只指定宽度时进行等比缩放)
 * @param string $filename 保存路径(不指定时直接输出到浏览器)
 * @return bool
 */
function mkThumbnail($src, $width = null, $height = null, $filename = null) {
  if (!isset($width) && !isset($height))
    return false;
  if (isset($width) && $width <= 0)
    return false;
  if (isset($height) && $height <= 0)
    return false;
  $size = getimagesize($src);
  if (!$size)
    return false;
  list($src_w, $src_h, $src_type) = $size;
  $src_mime = $size['mime'];
  switch($src_type) {
    case 1 :
      $img_type = 'gif';
      break;
    case 2 :
      $img_type = 'jpeg';
      break;
    case 3 :
      $img_type = 'png';
      break;
    case 15 :
      $img_type = 'wbmp';
      break;
    default :
      return false;
  }
  if (!isset($width))
    $width = $src_w * ($height / $src_h);
  if (!isset($height))
    $height = $src_h * ($width / $src_w);
  $imagecreatefunc = 'imagecreatefrom' . $img_type;
  $src_img = $imagecreatefunc($src);
  $dest_img = imagecreatetruecolor($width, $height);
  imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $width, $height, $src_w, $src_h);
  $imagefunc = 'image' . $img_type;
  if ($filename) {
    $imagefunc($dest_img, $filename);
  } else {
    header('Content-Type: ' . $src_mime);
    $imagefunc($dest_img);
  }
  imagedestroy($src_img);
  imagedestroy($dest_img);
  return true;
}
$result = mkThumbnail('./IMG_3324.JPG', 147, 147);

注:记得先打开 GD 库的支持

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php简单操作mysql数据库的类
Apr 16 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
浅谈PHP匿名函数和闭包
Mar 08 PHP
在laravel中实现ORM模型使用第二个数据库设置
Oct 24 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
详解php反序列化
Jun 10 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 #PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 #PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 #PHP
PHP实现根据密码长度显示安全条
Jul 04 #PHP
PHP截取发动短信内容的方法
Jul 04 #PHP
phpcms配置列表页以及获得文章发布时间
Jul 04 #PHP
一个非常实用的php文件上传类
Jul 04 #PHP
You might like
谈谈PHP语法(2)
2006/10/09 PHP
隐藏你的.php文件的实现方法
2007/03/19 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
javascript 三种编解码方式
2010/02/01 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
Python实现的数据结构与算法之队列详解
2015/04/22 Python
Python中的变量和作用域详解
2016/07/13 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
numpy 声明空数组详解
2019/12/05 Python
python 的topk算法实例
2020/04/02 Python
python的数学算法函数及公式用法
2020/11/18 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
最新的咖啡店创业计划书
2013/12/30 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
给校长的建议书
2014/03/12 职场文书
医学专业大学生求职信
2014/07/12 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python