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的FTP学习(一)
Oct 09 PHP
php 之 没有mysql支持时的替代方案
Oct 09 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
mysql数据库差异比较的PHP代码
Feb 05 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
通过dbi使用perl连接mysql数据库的方法
Apr 16 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
PHP安全下载文件的方法
Apr 07 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
学习thinkphp5.0验证类使用方法
Nov 16 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
JavaScript经典效果集锦
2010/07/06 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
django中ImageField的使用详解
2020/12/21 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
数字天堂软件测试面试题
2012/12/23 面试题
运动会广播稿300字
2014/01/10 职场文书
入党自我评价范文
2014/02/02 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
小学教师求职信范文
2015/03/20 职场文书
2015入党自传格式范文
2015/06/26 职场文书
军事理论课感想
2015/08/11 职场文书
Golang并发工具Singleflight
2022/05/06 Golang