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的历史和优缺点
Oct 09 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
php header功能的使用
Oct 28 PHP
zf框架db类的分页示例分享
Mar 14 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
在PHP中使用X-SendFile头让文件下载更快
Jun 01 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
ThinkPHP 3使用OSS的方法
Jul 19 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
python实现简单ftp客户端的方法
2015/06/28 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
python django生成迁移文件的实例
2019/08/31 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
公司管理建议书范文
2014/03/12 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
入党函调证明材料
2014/12/24 职场文书
节水倡议书
2015/01/19 职场文书
岁月神偷观后感
2015/06/11 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript
Redis 限流器
2022/05/15 Redis