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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
PHP 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
虚拟主机中对PHP的特殊设置
Oct 09 PHP
php中对xml读取的相关函数的介绍一
Jun 05 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
joomla组件开发入门教程
May 04 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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超级全局变量
2010/01/26 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
英国健身超市:Fitness Superstore
2019/06/17 全球购物
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
警示教育活动总结
2014/05/05 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏