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
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
php绘制一条弧线的方法
Jan 24 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
laravel批量生成假数据的方法
Oct 09 PHP
PHP多进程简单实例小结
Nov 09 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
PHP如何将XML转成数组
2016/04/04 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
Prototype Array对象 学习
2009/07/19 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
JS判断时间段的实现代码
2017/06/14 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
详解K-means算法在Python中的实现
2017/12/05 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
python实现根据文件格式分类
2019/10/31 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
护理专业优质毕业生自荐书
2014/01/31 职场文书
cf战队收人广告词
2014/03/14 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
护士节活动总结
2014/08/29 职场文书
环卫处个人工作总结
2015/03/04 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
离婚律师函范本
2015/05/27 职场文书
暑期家教宣传单
2015/07/14 职场文书