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 相关文章推荐
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
简单谈谈php浮点数精确运算
Mar 10 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
PHP实现添加购物车功能
Mar 06 PHP
一个实用的php验证码类
Jul 06 PHP
详细解读php的命名空间(一)
Feb 21 PHP
php生成word并下载代码实例
Mar 15 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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 MySQL与分页效率
2008/06/04 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
使用JQuery进行跨域请求
2010/01/25 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
Python进阶-函数默认参数(详解)
2017/05/18 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
eclipse创建python项目步骤详解
2019/05/10 Python
python语言基本语句用法总结
2019/06/11 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
加拿大留学自荐信
2014/01/28 职场文书
青蓝工程实施方案
2014/03/27 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
仙境之桥观后感
2015/06/16 职场文书
靠谱的活动总结
2019/04/16 职场文书