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 相关文章推荐
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 PHP
深入分析PHP设计模式
Jun 15 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程序员必备技能
2015/11/13 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
Javascript 二维数组
2009/11/26 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
TensorFlow实现卷积神经网络
2018/05/24 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
django从后台返回html代码的实例
2020/03/11 Python
python3中for循环踩过的坑记录
2020/12/14 Python
长安大学毕业生自我鉴定
2014/01/17 职场文书
质量月口号
2014/06/20 职场文书
社会工作专业自荐信
2014/09/26 职场文书
写给女朋友的保证书
2015/05/09 职场文书
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers