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 文件类型判断代码
Mar 13 PHP
php程序效率优化的一些策略小结
Jul 17 PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
php文件上传你必须知道的几点
Oct 20 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
CodeIgniter整合Smarty的方法详解
Aug 25 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
星际争霸秘籍
2020/03/04 星际争霸
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
微信小程序radio组件使用详解
2018/01/31 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python实现定时播放mp3
2015/03/29 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
python实现文件的分割与合并
2019/08/29 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
c语言常见笔试题总结
2016/09/05 面试题
介绍一下Linux中的链接
2016/06/05 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
2014年营销工作总结
2014/11/22 职场文书
教师个人教学反思
2016/02/23 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript
Python实现位图分割的效果
2021/11/20 Python