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