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