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中uploaded_files函数使用方法详解
Mar 09 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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 flush类输出缓冲剖析
2008/10/19 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
jquery中this的使用说明
2010/09/06 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
js单例模式的两种方案
2013/10/22 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
vue组件生命周期详解
2017/11/07 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
vue 项目接口管理的实现
2019/01/17 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
python中sys.argv参数用法实例分析
2015/05/20 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
itchat接口使用示例
2017/10/23 Python
Django中使用Celery的教程详解
2018/08/24 Python
解读python如何实现决策树算法
2018/10/11 Python
python内存管理机制原理详解
2019/08/12 Python
python中count函数简单的实例讲解
2020/02/06 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
小小商店教学反思
2014/04/27 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
竞聘书的秘诀
2019/04/02 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS