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 相关文章推荐
消息持续发送的完整例子
Oct 09 PHP
建立文件交换功能的脚本(二)
Oct 09 PHP
PHP 读取和修改大文件的某行内容的代码
Oct 30 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
php单例模式示例分享
Feb 12 PHP
php中动态变量用法实例
Jun 10 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
PHP实现支持加盐的图片加密解密
Sep 09 PHP
php fread读取文件注意事项
Sep 24 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 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的header和asp中的redirect比较
2006/10/09 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python每隔N秒运行指定函数的方法
2015/03/16 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
python装饰器实例大详解
2017/10/25 Python
python3 读写文件换行符的方法
2018/04/09 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
Linux的主要特性
2016/09/03 面试题
人事助理岗位职责
2013/11/18 职场文书
经典演讲稿汇总
2014/05/19 职场文书
文员求职信
2014/07/15 职场文书
公司人事任命通知
2015/04/20 职场文书
今日说法观后感
2015/06/08 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书