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

 更新时间:2015年04月17日 11:04:58   作者:不吃皮蛋  
这篇文章主要介绍了php使用GD创建保持宽高比缩略图的方法,涉及php使用GD库操作图片的技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 详解配置 Apache 服务器支持 PHP 文件的解析

    详解配置 Apache 服务器支持 PHP 文件的解析

    这篇文章主要介绍了详解配置 Apache 服务器支持 PHP 文件的解析的相关资料,需要的朋友可以参考下
    2017-02-02
  • PHP开发的一些注意点总结

    PHP开发的一些注意点总结

    技术平台的不同,导致了实现方式的不同,同样是PHP,小公司往往选择的是WIN平台而大公司选择的是类unix平台(Linux,FreeBSD and Other) ,现在就最近这段时间的学习,这好乘国庆长假这段时间好好的总结下的了.
    2010-10-10
  • PHP laravel使用自定义邮件类实现发送邮件

    PHP laravel使用自定义邮件类实现发送邮件

    这篇文章主要为大家详细介绍了PHP laravel如何通过自定义邮件类实现发送邮件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-10-10
  • LINUX下PHP程序实现WORD文件转化为PDF文件的方法

    LINUX下PHP程序实现WORD文件转化为PDF文件的方法

    这篇文章主要介绍了LINUX下PHP程序实现WORD文件转化为PDF文件的方法,涉及php针对Word文档与pdf格式文件的相关操作技巧,需要的朋友可以参考下
    2016-05-05
  • 将数组写入txt文件 var_export

    将数组写入txt文件 var_export

    var_export($times,true);后面不加true不能写入文件哟
    2009-04-04
  • PHP重定向与伪静态区别

    PHP重定向与伪静态区别

    伪静态是SEO重要的方法,通过重定向来实现,并且可以通过重定向来隐藏网站的技术,过滤异常访问。本课分为两部分,前半部分详细介绍Apache重定向的基础知识,后半部分通过多个实际案例再次加深对重定向的理解,并且会演示各种重定向设置后的实际效果。
    2017-02-02
  • PHP操作Mongodb封装类完整实例

    PHP操作Mongodb封装类完整实例

    这篇文章主要介绍了PHP操作Mongodb封装类,结合完整实例形式分析了php封装的针对MongoDB数据库常见的基本配置、连接、增删改查、集合等操作定义与使用方法,需要的朋友可以参考下
    2018-06-06
  • php在文件指定行中写入代码的方法

    php在文件指定行中写入代码的方法

    有的站主页是缓存页面,你加入的网马代码或是webshell代码经常被更新或是其它的因素干掉,所以弄了这个代码,防范方法脚本之家将最后给解决方法
    2012-05-05
  • php桥接模式的实例用法及代码分析

    php桥接模式的实例用法及代码分析

    在本篇内容里小编给大家整理了一篇关于php桥接模式的实例用法及代码分析内容,有需要的朋友们可以学习下。
    2021-07-07
  • php动态添加url查询参数的方法

    php动态添加url查询参数的方法

    这篇文章主要介绍了php动态添加url查询参数的方法,涉及php通过正则替换操作URL的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04

最新评论