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 时间日期操作实战
Aug 26 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
php的array_multisort()使用方法介绍
May 16 PHP
PHP设计模式之调解者模式的深入解析
Jun 13 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 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 socket方式提交的post详解
2008/07/19 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
js表数据排序 sort table data
2009/02/18 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
教师自荐书
2013/10/08 职场文书
财务会计专业推荐信
2013/11/30 职场文书
学生思想表现的评语
2014/01/30 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
道歉情书大全
2015/05/12 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL