1
<?php
2
//====================================================
3
// FileName:GDImage.inc.php
4
// Summary: 图片处理程序
5
//====================================================
6![](/Images/OutliningIndicators/None.gif)
7
class GDImage
8
{
9
var $sourcePath; //图片存储路径
10
var $galleryPath; //图片缩略图and水印图存储路径
11
var $toFile = false; //是否生成文件
12
var $fontName; //使用的英文TTF字体名称
13
var $fontName_GBK;
14
var $maxWidth = 500; //图片最大宽度
15
var $maxHeight = 600; //图片最大高度
16![](/Images/OutliningIndicators/None.gif)
17
//==========================================
18
// 函数: GDImage($sourcePath ,$galleryPath, $fontPath)
19
// 功能: constructor
20
// 参数: $sourcePath 图片源路径(包括最后一个"/")
21
// 参数: $galleryPath 生成图片的路径
22
// 参数: $fontPath 字体路径
23
//==========================================
24
function GDImage($sourcePath, $galleryPath, $fontPath)
25
{
26
$this->sourcePath = $sourcePath;
27
$this->galleryPath = $galleryPath;
28
$this->fontName = $fontPath . "04B_08__.TTF";
29
$this->fontName_GBK = $fontPath . "汉仪综艺体简.ttf";
30
}
31![](/Images/OutliningIndicators/None.gif)
32
//==========================================
33
// 函数: makeThumb($sourFile,$width=128,$height=128)
34
// 功能: 生成缩略图(输出到浏览器)
35
// 参数: $sourFile 图片源文件
36
// 参数: $width 生成缩略图的宽度
37
// 参数: $height 生成缩略图的高度
38
// 返回: 0 失败 成功时返回生成的图片路径
39
//==========================================
40
function makeThumb($sourFile,$width=102,$height=78)
41
{
42
$imageInfo = $this->getInfo($sourFile);
43
$sourFile = $this->sourcePath . $sourFile;
44
$newName = substr($imageInfo["name"], 0, strrpos($imageInfo["name"], ".")) . "_thumb.jpg";
45
switch ($imageInfo["type"])
46
{
47
case 1: //gif
48
$img = imagecreatefromgif($sourFile);
49
break;
50
case 2: //jpg
51
$img = imagecreatefromjpeg($sourFile);
52
break;
53
case 3: //png
54
$img = imagecreatefrompng($sourFile);
55
break;
56
default:
57
return 0;
58
break;
59
}
60
if (!$img)
61
return 0;
62![](/Images/OutliningIndicators/None.gif)
63
$width = ($width > $imageInfo["width"]) ? $imageInfo["width"] : $width;
64
$height = ($height > $imageInfo["height"]) ? $imageInfo["height"] : $height;
65
//$srcW = $imageInfo["width"];
66
//$srcH = $imageInfo["height"];
67
//if ($srcW * $width > $srcH * $height)
68
//$height = round($srcH * $width / $srcW);
69
//else
70
//$width = round($srcW * $height / $srcH);
71
//*
72
if (function_exists("imagecreatetruecolor")) //GD2.0.1
73
{
74
$new = imagecreatetruecolor($width, $height);
75
ImageCopyResampled($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
76
}
77
else
78
{
79
$new = imagecreate($width, $height);
80
ImageCopyResized($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
81
}
82
//*/
83
if ($this->toFile)
84
{
85
if (file_exists($this->galleryPath . $newName))
86
unlink($this->galleryPath . $newName);
87
ImageJPEG($new, $this->galleryPath . $newName);
88
return $this->galleryPath . $newName;
89
}
90
else
91
{
92
ImageJPEG($new);
93
}
94
ImageDestroy($new);
95
ImageDestroy($img);
96![](/Images/OutliningIndicators/None.gif)
97
}
98
//==========================================
99
// 函数: waterMark($sourFile, $text)
100
// 功能: 给图片加水印
101
// 参数: $sourFile 图片文件名
102
// 参数: $text 文本数组(包含二个字符串)
103
// 返回: 1 成功 成功时返回生成的图片路径
104
//==========================================
105
function waterMark($sourFile, $text)
106
{
107
$imageInfo = $this->getInfo($sourFile);
108
$sourFile = $this->sourcePath . $sourFile;
109
$newName = substr($imageInfo["name"], 0, strrpos($imageInfo["name"], ".")) . "_mark.jpg";
110
switch ($imageInfo["type"])
111
{
112
case 1: //gif
113
$img = imagecreatefromgif($sourFile);
114
break;
115
case 2: //jpg
116
$img = imagecreatefromjpeg($sourFile);
117
break;
118
case 3: //png
119
$img = imagecreatefrompng($sourFile);
120
break;
121
default:
122
return 0;
123
break;
124
}
125
if (!$img)
126
return 0;
127![](/Images/OutliningIndicators/None.gif)
128
$width =$this->maxWidth;
129
$height =$this->maxHeight;
130
$srcW = $imageInfo["width"];
131
$srcH = $imageInfo["height"];
132
if ($srcW * $width > $srcH * $height)
133
$height = round($srcH * $width / $srcW);
134
else
135
$width = round($srcW * $height / $srcH);
136
if (function_exists("imagecreatetruecolor")) //GD2.0.1
137
{
138
$new = imagecreatetruecolor($width, $height);
139
ImageCopyResampled($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
140
}
141
else
142
{
143
$new = imagecreate($width, $height);
144
ImageCopyResized($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
145
}
146
$white = imageColorAllocate($new, 255, 255, 255);
147
$black = imageColorAllocate($new, 0, 0, 0);
148
$hoariness = imageColorAllocateAlpha($new, 255, 235, 250,70);
149
$alpha = imageColorAllocateAlpha($new, 230, 230, 230, 60);
150
ImageFilledRectangle($new, 0, $height-26, $width, $height, $alpha);
151
ImageFilledRectangle($new, 13, $height-20, 15, $height-7, $black);
152
ImageTTFText($new, 40, 0, 10, $height-100, $hoariness, $this->fontName_GBK, $text[0]);
153
ImageTTFText($new, 4.9, 0, 20, $height-14, $black, $this->fontName, $text[1]);
154
ImageTTFText($new, 4.9, 0, 20, $height-6, $black, $this->fontName, $text[2]);
155
if ($this->toFile)
156
{
157
if (file_exists($this->galleryPath . $newName))
158
@unlink($this->galleryPath . $newName);
159
ImageJPEG($new, $this->galleryPath . $newName);
160
return $this->galleryPath . $newName;
161
}
162
else
163
{
164
ImageJPEG($new);
165
}
166
clearstatcache();
167
ImageDestroy($new);
168
ImageDestroy($img);
169
}
170
//==========================================
171
// 函数: displayThumb($file)
172
// 功能: 显示指定图片的缩略图
173
// 参数: $file 文件名
174
// 返回: 0 图片不存在
175
//==========================================
176
function displayThumb($file)
177
{
178
$thumbName = substr($file, 0, strrpos($file, ".")) . "_thumb.jpg";
179
$file = $this->galleryPath . $thumbName;
180
if (!file_exists($file))
181
return 0;
182
clearstatcache();
183
return $file;
184
}
185
//==========================================
186
// 函数: displayMark($file)
187
// 功能: 显示指定图片的水印图
188
// 参数: $file 文件名
189
// 返回: 0 图片不存在
190
//==========================================
191
function displayMark($file)
192
{
193
$markName = substr($file, 0, strrpos($file, ".")) . "_mark.jpg";
194
$file = $this->galleryPath . $markName;
195
if (!file_exists($file))
196
return 0;
197
return $file;
198
}
199
//==========================================
200
// 函数: getInfo($file)
201
// 功能: 返回图像信息
202
// 参数: $file 文件路径
203
// 返回: 图片信息数组
204
//==========================================
205
function getInfo($file)
206
{
207
$file = $this->sourcePath . $file;
208
$data = getimagesize($file);
209
$imageInfo["width"] = $data[0];
210
$imageInfo["height"]= $data[1];
211
$imageInfo["type"] = $data[2];
212
$imageInfo["name"] = basename($file);
213
return $imageInfo;
214
}
215
}
216
?>
217![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/None.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)
62
![](/Images/OutliningIndicators/None.gif)
63
![](/Images/OutliningIndicators/None.gif)
64
![](/Images/OutliningIndicators/None.gif)
65
![](/Images/OutliningIndicators/None.gif)
66
![](/Images/OutliningIndicators/None.gif)
67
![](/Images/OutliningIndicators/None.gif)
68
![](/Images/OutliningIndicators/None.gif)
69
![](/Images/OutliningIndicators/None.gif)
70
![](/Images/OutliningIndicators/None.gif)
71
![](/Images/OutliningIndicators/None.gif)
72
![](/Images/OutliningIndicators/None.gif)
73
![](/Images/OutliningIndicators/None.gif)
74
![](/Images/OutliningIndicators/None.gif)
75
![](/Images/OutliningIndicators/None.gif)
76
![](/Images/OutliningIndicators/None.gif)
77
![](/Images/OutliningIndicators/None.gif)
78
![](/Images/OutliningIndicators/None.gif)
79
![](/Images/OutliningIndicators/None.gif)
80
![](/Images/OutliningIndicators/None.gif)
81
![](/Images/OutliningIndicators/None.gif)
82
![](/Images/OutliningIndicators/None.gif)
83
![](/Images/OutliningIndicators/None.gif)
84
![](/Images/OutliningIndicators/None.gif)
85
![](/Images/OutliningIndicators/None.gif)
86
![](/Images/OutliningIndicators/None.gif)
87
![](/Images/OutliningIndicators/None.gif)
88
![](/Images/OutliningIndicators/None.gif)
89
![](/Images/OutliningIndicators/None.gif)
90
![](/Images/OutliningIndicators/None.gif)
91
![](/Images/OutliningIndicators/None.gif)
92
![](/Images/OutliningIndicators/None.gif)
93
![](/Images/OutliningIndicators/None.gif)
94
![](/Images/OutliningIndicators/None.gif)
95
![](/Images/OutliningIndicators/None.gif)
96
![](/Images/OutliningIndicators/None.gif)
97
![](/Images/OutliningIndicators/None.gif)
98
![](/Images/OutliningIndicators/None.gif)
99
![](/Images/OutliningIndicators/None.gif)
100
![](/Images/OutliningIndicators/None.gif)
101
![](/Images/OutliningIndicators/None.gif)
102
![](/Images/OutliningIndicators/None.gif)
103
![](/Images/OutliningIndicators/None.gif)
104
![](/Images/OutliningIndicators/None.gif)
105
![](/Images/OutliningIndicators/None.gif)
106
![](/Images/OutliningIndicators/None.gif)
107
![](/Images/OutliningIndicators/None.gif)
108
![](/Images/OutliningIndicators/None.gif)
109
![](/Images/OutliningIndicators/None.gif)
110
![](/Images/OutliningIndicators/None.gif)
111
![](/Images/OutliningIndicators/None.gif)
112
![](/Images/OutliningIndicators/None.gif)
113
![](/Images/OutliningIndicators/None.gif)
114
![](/Images/OutliningIndicators/None.gif)
115
![](/Images/OutliningIndicators/None.gif)
116
![](/Images/OutliningIndicators/None.gif)
117
![](/Images/OutliningIndicators/None.gif)
118
![](/Images/OutliningIndicators/None.gif)
119
![](/Images/OutliningIndicators/None.gif)
120
![](/Images/OutliningIndicators/None.gif)
121
![](/Images/OutliningIndicators/None.gif)
122
![](/Images/OutliningIndicators/None.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/None.gif)
125
![](/Images/OutliningIndicators/None.gif)
126
![](/Images/OutliningIndicators/None.gif)
127
![](/Images/OutliningIndicators/None.gif)
128
![](/Images/OutliningIndicators/None.gif)
129
![](/Images/OutliningIndicators/None.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/None.gif)
133
![](/Images/OutliningIndicators/None.gif)
134
![](/Images/OutliningIndicators/None.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/None.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/None.gif)
141
![](/Images/OutliningIndicators/None.gif)
142
![](/Images/OutliningIndicators/None.gif)
143
![](/Images/OutliningIndicators/None.gif)
144
![](/Images/OutliningIndicators/None.gif)
145
![](/Images/OutliningIndicators/None.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/None.gif)
149
![](/Images/OutliningIndicators/None.gif)
150
![](/Images/OutliningIndicators/None.gif)
151
![](/Images/OutliningIndicators/None.gif)
152
![](/Images/OutliningIndicators/None.gif)
153
![](/Images/OutliningIndicators/None.gif)
154
![](/Images/OutliningIndicators/None.gif)
155
![](/Images/OutliningIndicators/None.gif)
156
![](/Images/OutliningIndicators/None.gif)
157
![](/Images/OutliningIndicators/None.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/None.gif)
160
![](/Images/OutliningIndicators/None.gif)
161
![](/Images/OutliningIndicators/None.gif)
162
![](/Images/OutliningIndicators/None.gif)
163
![](/Images/OutliningIndicators/None.gif)
164
![](/Images/OutliningIndicators/None.gif)
165
![](/Images/OutliningIndicators/None.gif)
166
![](/Images/OutliningIndicators/None.gif)
167
![](/Images/OutliningIndicators/None.gif)
168
![](/Images/OutliningIndicators/None.gif)
169
![](/Images/OutliningIndicators/None.gif)
170
![](/Images/OutliningIndicators/None.gif)
171
![](/Images/OutliningIndicators/None.gif)
172
![](/Images/OutliningIndicators/None.gif)
173
![](/Images/OutliningIndicators/None.gif)
174
![](/Images/OutliningIndicators/None.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/None.gif)
183
![](/Images/OutliningIndicators/None.gif)
184
![](/Images/OutliningIndicators/None.gif)
185
![](/Images/OutliningIndicators/None.gif)
186
![](/Images/OutliningIndicators/None.gif)
187
![](/Images/OutliningIndicators/None.gif)
188
![](/Images/OutliningIndicators/None.gif)
189
![](/Images/OutliningIndicators/None.gif)
190
![](/Images/OutliningIndicators/None.gif)
191
![](/Images/OutliningIndicators/None.gif)
192
![](/Images/OutliningIndicators/None.gif)
193
![](/Images/OutliningIndicators/None.gif)
194
![](/Images/OutliningIndicators/None.gif)
195
![](/Images/OutliningIndicators/None.gif)
196
![](/Images/OutliningIndicators/None.gif)
197
![](/Images/OutliningIndicators/None.gif)
198
![](/Images/OutliningIndicators/None.gif)
199
![](/Images/OutliningIndicators/None.gif)
200
![](/Images/OutliningIndicators/None.gif)
201
![](/Images/OutliningIndicators/None.gif)
202
![](/Images/OutliningIndicators/None.gif)
203
![](/Images/OutliningIndicators/None.gif)
204
![](/Images/OutliningIndicators/None.gif)
205
![](/Images/OutliningIndicators/None.gif)
206
![](/Images/OutliningIndicators/None.gif)
207
![](/Images/OutliningIndicators/None.gif)
208
![](/Images/OutliningIndicators/None.gif)
209
![](/Images/OutliningIndicators/None.gif)
210
![](/Images/OutliningIndicators/None.gif)
211
![](/Images/OutliningIndicators/None.gif)
212
![](/Images/OutliningIndicators/None.gif)
213
![](/Images/OutliningIndicators/None.gif)
214
![](/Images/OutliningIndicators/None.gif)
215
![](/Images/OutliningIndicators/None.gif)
216
![](/Images/OutliningIndicators/None.gif)
217
![](/Images/OutliningIndicators/None.gif)