要使用PHP生成图片缩略图,要保证你的PHP服务器安装了GD2图形库 使用一个类生成图片的缩略图
1.使用方法
1
2
|
$resizeimage = new resizeimage( "图片源文件地址" , "200" , "100" , "0" , "缩略图地址" );
//就只用上面的一句话,就能生成缩略图,其中,源文件和缩略图地址可以相同,200,100分别代表宽和高
|
2. 缩略图类代码
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
//使用如下类就可以生成图片缩略图,
<?php
class resizeimage
{
//图片类型
var $type ;
//实际宽度
var $width ;
//实际高度
var $height ;
//改变后的宽度
var $resize_width ;
//改变后的高度
var $resize_height ;
//是否裁图
var $cut ;
//源图象
var $srcimg ;
//目标图象地址
var $dstimg ;
//临时创建的图象
var $im ;
function resizeimage( $img , $wid , $hei , $c , $dstpath )
{
$this ->srcimg = $img ;
$this ->resize_width = $wid ;
$this ->resize_height = $hei ;
$this ->cut = $c ;
//图片的类型
$this ->type = strtolower ( substr ( strrchr ( $this ->srcimg, "." ),1));
//初始化图象
$this ->initi_img();
//目标图象地址
$this -> dst_img( $dstpath );
//--
$this ->width = imagesx( $this ->im);
$this ->height = imagesy( $this ->im);
//生成图象
$this ->newimg();
ImageDestroy ( $this ->im);
}
function newimg()
{
//改变后的图象的比例
$resize_ratio = ( $this ->resize_width)/( $this ->resize_height);
//实际图象的比例
$ratio = ( $this ->width)/( $this ->height);
if (( $this ->cut)== "1" )
//裁图
{
if ( $ratio >= $resize_ratio )
//高度优先
{
$newimg = imagecreatetruecolor( $this ->resize_width, $this ->resize_height);
imagecopyresampled( $newimg , $this ->im, 0, 0, 0, 0, $this ->resize_width, $this ->resize_height, (( $this ->height)* $resize_ratio ), $this ->height);
ImageJpeg ( $newimg , $this ->dstimg);
}
if ( $ratio < $resize_ratio )
//宽度优先
{
$newimg = imagecreatetruecolor( $this ->resize_width, $this ->resize_height);
imagecopyresampled( $newimg , $this ->im, 0, 0, 0, 0, $this ->resize_width, $this ->resize_height, $this ->width, (( $this ->width)/ $resize_ratio ));
ImageJpeg ( $newimg , $this ->dstimg);
}
}
else
//不裁图
{
if ( $ratio >= $resize_ratio )
{
$newimg = imagecreatetruecolor( $this ->resize_width,( $this ->resize_width)/ $ratio );
imagecopyresampled( $newimg , $this ->im, 0, 0, 0, 0, $this ->resize_width, ( $this ->resize_width)/ $ratio , $this ->width, $this ->height);
ImageJpeg ( $newimg , $this ->dstimg);
}
if ( $ratio < $resize_ratio )
{
$newimg = imagecreatetruecolor(( $this ->resize_height)* $ratio , $this ->resize_height);
imagecopyresampled( $newimg , $this ->im, 0, 0, 0, 0, ( $this ->resize_height)* $ratio , $this ->resize_height, $this ->width, $this ->height);
ImageJpeg ( $newimg , $this ->dstimg);
}
}
}
//初始化图象
function initi_img()
{
if ( $this ->type== "jpg" )
{
$this ->im = imagecreatefromjpeg( $this ->srcimg);
}
if ( $this ->type== "gif" )
{
$this ->im = imagecreatefromgif( $this ->srcimg);
}
if ( $this ->type== "png" )
{
$this ->im = imagecreatefrompng( $this ->srcimg);
}
}
//图象目标地址
function dst_img( $dstpath )
{
$full_length = strlen ( $this ->srcimg);
$type_length = strlen ( $this ->type);
$name_length = $full_length - $type_length ;
$name = substr ( $this ->srcimg,0, $name_length -1);
$this ->dstimg = $dstpath ;
//echo $this->dstimg;
}
}
?>
|