本文实例讲述了php使用GD创建保持宽高比缩略图的方法。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/**
* 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程序设计有所帮助。