本文实例讲述了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
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
|
<?php
//图片处理工具类
class Image{
//属性
private $thumb_width ; //缩略图的宽
private $thumb_height ;
//错误属性
public $thumb_error ;
//构造方法
public function __construct( $width = 0, $height = 0){
$this ->thumb_width = ( $width == 0) ? $GLOBALS [ 'config' ][ 'admin_goods_thumb' ][ 'width' ] : $width ;
$this ->thumb_height = ( $height == 0) ? $GLOBALS [ 'config' ][ 'admin_goods_thumb' ][ 'height' ] : $height ;
}
/*
* 制作缩略图
* @param1 string $src,原图路径,/uploads/20150122101010abcdef.gif
* @param2 string $path,缩略图保存路径/uploads/thumb_20150122101010abcdef.gif
* @return 缩略图的名字
*/
public function makeThumb( $src , $path ){
//判断原图是否存在
if (! file_exists ( $src )){
$this ->thumb_error = '原图不存在!' ;
return false;
}
//打开原图资源
//获取能够使用的后缀
$ext = $this ->getFunctionName( $src ); //gif
//拼凑函数名
$open = 'imagecreatefrom' . $ext ; //imagecreatefromgif
$save = 'image' . $ext ; //imagegif
//如果不清楚;echo $open,$save;exit;
//可变函数打开原图资源
$src_img = $open ( $src ); //利用可变函数打开图片资源
//imagecreatefromgif($src)
//缩略图资源
$dst_img = imagecreatetruecolor( $this ->thumb_width, $this ->thumb_height);
//背景色填充白色
$dst_bg_color = imagecolorallocate( $dst_img ,255,255,255);
imagefill( $dst_img ,0,0, $dst_bg_color );
//宽高比确定宽高
$dst_size = $this ->thumb_width / $this ->thumb_height;
//获取原图数据
$file_info = getimagesize ( $src );
$src_size = $file_info [0]/ $file_info [1];
//求出缩略图宽和高
if ( $src_size > $dst_size ){
//原图宽高比大于缩略图
$width = $this ->thumb_width;
$height = round ( $width / $src_size );
} else {
$height = $this ->thumb_height;
$width = round ( $height * $src_size );
}
//求出缩略图起始位置
$dst_x = round ( $this ->thumb_width - $width )/2;
$dst_y = round ( $this ->thumb_height - $height )/2;
//制作缩略图
if (imagecopyresampled( $dst_img , $src_img , $dst_x , $dst_y ,0,0, $width , $height , $file_info [0], $file_info [1])){
//采样成功:保存,将文件保存到对应的路径下
$thumb_name = 'thumb_' . basename ( $src );
$save ( $dst_img , $path . '/' . $thumb_name );
//保存成功
return $thumb_name ;
} else {
//采样失败
$this ->thumb_error = '缩略图采样失败!' ;
return false;
}
}
/*
* 获取文件要调用的函数名
* @param1 string $file,文件名字
* @return 通过文件后缀名得到的函数字符串
*/
private function getFunctionName( $file ){
//得到文件的后缀
$file_info = pathinfo ( $file );
$ext = $file_info [ 'extension' ]; //后缀:gif,png,jpg,jpeg,pjpeg
//imagecreatefromgif,imagecreatefromjpeg,imagecreatefrompng
//定义一个数组保存函数名
$func = array (
'gif' => 'gif' ,
'png' => 'png' ,
'jpg' => 'jpeg' ,
'jpeg' => 'jpeg' ,
'pjpeg' => 'jpeg'
);
//返回值
return $func [ $ext ];
}
}
|
希望本文所述对大家PHP程序设计有所帮助。