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入门的学习方法
Jan 02 PHP
PHP 数字左侧自动补0
Mar 31 PHP
超级简单的php+mysql留言本源码
Nov 11 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
PHP sprintf()函数用例解析
May 18 PHP
php简单的上传类分享
May 15 PHP
PHP实现简易blog的制作
Oct 24 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
yii2 上传图片的示例代码
Nov 02 PHP
PDO::lastInsertId讲解
Jan 29 PHP
php模拟实现斗地主发牌
Apr 22 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python File(文件) 方法整理
2019/02/18 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python 错误处理 assert详解
2020/04/20 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
毕业生求职信的经典写法
2014/01/31 职场文书
《花木兰》教学反思
2014/04/09 职场文书
公司请假条格式
2014/04/11 职场文书
村委会换届选举方案
2014/05/03 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电