php使用GD创建保持宽高比缩略图的方法


Posted in PHP onApril 17, 2015

本文实例讲述了php使用GD创建保持宽高比缩略图的方法。分享给大家供大家参考。具体如下:

/**
* Create a thumbnail image from $inputFileName no taller or wider than
* $maxSize. Returns the new image resource or false on error.
* Author: mthorn.net
*/
function thumbnail($inputFileName, $maxSize = 100)
{
 $info = getimagesize($inputFileName);
  $type = isset($info['type']) ? $info['type'] : $info[2];
  // Check support of file type
 if ( !(imagetypes() & $type) )
 {
   // Server does not support file type
   return false;
 }
  $width = isset($info['width']) ? $info['width'] : $info[0];
 $height = isset($info['height']) ? $info['height'] : $info[1];
  // Calculate aspect ratio
 $wRatio = $maxSize / $width;
 $hRatio = $maxSize / $height;
  // Using imagecreatefromstring will automatically detect the file type
 $sourceImage = imagecreatefromstring(file_get_contents($inputFileName));
  // Calculate a proportional width and height no larger than the max size.
 if ( ($width <= $maxSize) && ($height <= $maxSize) )
 {
   // Input is smaller than thumbnail, do nothing
   return $sourceImage;
 }
 elseif ( ($wRatio * $height) < $maxSize )
 {
   // Image is horizontal
   $tHeight = ceil($wRatio * $height);
   $tWidth = $maxSize;
 }
 else
 {
   // Image is vertical
   $tWidth = ceil($hRatio * $width);
   $tHeight = $maxSize;
 }
  $thumb = imagecreatetruecolor($tWidth, $tHeight);
  if ( $sourceImage === false )
 {
   // Could not load image
   return false;
 }
  // Copy resampled makes a smooth thumbnail
 imagecopyresampled($thumb,$sourceImage,0,0,0,0,$tWidth,$tHeight,$width,$height);
 imagedestroy($sourceImage);
  return $thumb;
}
 /**
* Save the image to a file. Type is determined from the extension.
* $quality is only used for jpegs.
* Author: mthorn.net
*/
function imageToFile($im, $fileName, $quality = 80)
{
 if ( !$im || file_exists($fileName) )
 {
   return false;
 }
  $ext = strtolower(substr($fileName, strrpos($fileName, '.')));
  switch ( $ext )
 {
  case '.gif':
  imagegif($im, $fileName);
  break;
  case '.jpg':
  case '.jpeg':
  imagejpeg($im, $fileName, $quality);
  break;
  case '.png':
  imagepng($im, $fileName);
  break;
  case '.bmp':
  imagewbmp($im, $fileName);
  break;
  default:
  return false;
 }
  return true;
}
$im = thumbnail('temp.jpg', 100);
imageToFile($im, 'temp-thumbnail.jpg');

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
php的hash算法介绍
Feb 13 PHP
php数组使用规则分析
Feb 27 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
分析php://output和php://stdout的区别
May 06 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
Yii使用DbTarget实现日志功能的示例代码
Jul 21 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 #PHP
php和editplus正则表达式去除空白行
Apr 17 #PHP
PHP生成唯一订单号的方法汇总
Apr 16 #PHP
微信access_token的获取开发示例
Apr 16 #PHP
微信自定义菜单的处理开发示例
Apr 16 #PHP
php简单操作mysql数据库的类
Apr 16 #PHP
PHP扩展程序实现守护进程
Apr 16 #PHP
You might like
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
python算法题 链表反转详解
2019/07/02 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
好的演讲稿开场白
2013/12/30 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
供应链金融服务方案
2014/05/25 职场文书
工作目标责任书
2014/07/23 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
python实现图片批量压缩
2021/04/24 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android