php 使用GD创建保持宽高比缩略图的解决办法
内容摘要
这篇文章主要为大家详细介绍了php 使用GD创建保持宽高比缩略图的简单示例,具有一定的参考价值,可以用来参考一下。
php使用GD创建保持宽高比的缩略图,对此感兴趣的朋友,看看idc
php使用GD创建保持宽高比的缩略图,对此感兴趣的朋友,看看idc
文章正文
这篇文章主要为大家详细介绍了php 使用GD创建保持宽高比缩略图的简单示例,具有一定的参考价值,可以用来参考一下。
php使用GD创建保持宽高比的缩略图,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:
/**
*从$ inputFileName创建一个缩略图,不高于或宽
* $ maxSize。 返回新图像资源或错误时返回false。
*
* @param
* @arrange (www.idcnote.com)
**/
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教程(www.idcnote.com) ***/
注:关于php 使用GD创建保持宽高比缩略图的简单示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释