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脚本的10个技巧(7)
Oct 09 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
PHP计划任务、定时执行任务的实现代码
Apr 23 PHP
用php解析html的实现代码
Aug 08 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
php数组键名技巧小结
Feb 17 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
php中文字符串截取多种方法汇总
Oct 06 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一些有意思的小区别
2006/12/06 PHP
mysql+php分页类(已测)
2008/03/31 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
可编辑下拉框的2种实现方式
2014/06/13 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python递归实现快速排序
2018/08/18 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
市场营销专业个人求职信范文
2013/12/14 职场文书
九年级家长会邀请函
2014/01/15 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
初中学生评语大全
2014/04/24 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
大学学生会辞职信
2015/05/13 职场文书
繁星春水读书笔记
2015/06/30 职场文书
八年级语文教学反思
2016/03/03 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript
pyqt5打包成exe可执行文件的方法
2021/05/14 Python