php教程

超轻量级php框架startmvc

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

更新时间:2020-03-03 23:30:10 作者:startmvc
本文实例讲述了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程序设计有所帮助。

php GD 创建 宽高比 缩略图