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者的疑难问答(1)
Oct 09 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
php使用curl打开https网站的方法
Jun 17 PHP
PHP连接MSSQL方法汇总
Feb 05 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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 正则表达式小结
2009/08/31 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
深入浅析php json 格式控制
2015/12/24 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python定时执行指定函数的方法
2015/05/27 Python
Python循环语句中else的用法总结
2016/09/11 Python
Python使用OpenCV进行标定
2018/05/08 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
网站设计师的岗位职责
2013/11/21 职场文书
远程研修随笔感言
2014/02/10 职场文书
大学生找工作求职信
2014/07/09 职场文书
语文课外活动总结
2014/08/27 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript