本文实例分析了php实现等比例不失真缩放上传图片的方法。分享给大家供大家参考,具体如下:
有时上传图片时因为图片太大了,不仅占用空间,消耗流量,而且影响浏(图片的尺寸大小不一)。下面分享一种等比例不失真缩放图片的方法,这样,不管上传的图片尺有多大,都会自动压缩到我们设置尺寸值的范围之内。经过测试,证明实用。
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
|
<?php function resizeImage( $im , $maxwidth , $maxheight , $name , $filetype ) { $pic_width = imagesx( $im ); $pic_height = imagesy( $im ); if (( $maxwidth && $pic_width > $maxwidth ) || ( $maxheight && $pic_height > $maxheight )) { if ( $maxwidth && $pic_width > $maxwidth ) { $widthratio = $maxwidth / $pic_width ; $resizewidth_tag = true; } if ( $maxheight && $pic_height > $maxheight ) { $heightratio = $maxheight / $pic_height ; $resizeheight_tag = true; } if ( $resizewidth_tag && $resizeheight_tag ) { if ( $widthratio < $heightratio ) $ratio = $widthratio ; else $ratio = $heightratio ; } if ( $resizewidth_tag && ! $resizeheight_tag ) $ratio = $widthratio ; if ( $resizeheight_tag && ! $resizewidth_tag ) $ratio = $heightratio ; $newwidth = $pic_width * $ratio ; $newheight = $pic_height * $ratio ; if (function_exists( "imagecopyresampled" )) { $newim = imagecreatetruecolor( $newwidth , $newheight ); //PHP系统函数 imagecopyresampled( $newim , $im ,0,0,0,0, $newwidth , $newheight , $pic_width , $pic_height ); //PHP系统函数 } else { $newim = imagecreate( $newwidth , $newheight ); imagecopyresized( $newim , $im ,0,0,0,0, $newwidth , $newheight , $pic_width , $pic_height ); } $name = $name . $filetype ; imagejpeg( $newim , $name ); imagedestroy( $newim ); } else { $name = $name . $filetype ; imagejpeg( $im , $name ); } } //使用方法: $im =imagecreatefromjpeg( "./20140416103023202.jpg" ); //参数是图片的存方路径 $maxwidth = "600" ; //设置图片的最大宽度 $maxheight = "400" ; //设置图片的最大高度 $name = "123" ; //图片的名称,随便取吧 $filetype = ".jpg" ; //图片类型 resizeImage( $im , $maxwidth , $maxheight , $name , $filetype ); //调用上面的函数 |
希望本文所述对大家PHP程序设计有所帮助。