1 <?php
2 /*
3 ** author 李攀
4 ** email 1061589921@qq.com
5 ** 实现移动开发中,多张图片排列.
6 */
7 $file = './234.png';
8 $Image = new image($file);
9 $width = $Image->getImageWidth();
10 $height = $Image->getImageHeight();
11 //判断该相片是否长宽相等
12 if($width != $height){
13 //不相等则先以最小边为长度截取图片中心部分
14 if($width > $height){
15 $x = ($width - $height) / 2;
16 $y = 0;
17 $width = $height;
18 }else{
19 $y = ($height - $width) / 2;
20 $x = 0;
21 $height = $width;
22 }
23 $Image->crop($file,$width,$height,$x,$y,$file);
24 }
25
26 //等比例缩放图片
27 $dst_w = 100;
28 $dst_h = 100;
29 $Image->reduce($file,$dst_w,$dst_h,$file);
30 ?>
31 <?php
32 class image{
33 private $_width;
34 private $_height;
35 private $_type;
36 //实例化时获取图片信息
37 function __construct($file_url){
38 $info = getimagesize($file_url);
39 $this->_width = $info[0];
40 $this->_height = $info[1];
41 $type = $info['mime'];
42 $type = explode('/',$type);
43 $this->_type = $type[1];
44 }
45 //返回图片类型
46 public function getImageType(){
47 return $this->_type;
48 }
49 //返回图片宽度
50 public function getImageWidth(){
51 return $this->_width;
52 }
53 //返回图片高度
54 public function getImageHeight(){
55 return $this->_height;
56 }
57
58 /*
59 **图片裁剪
60 ** $tmp_image源文件
61 ** $dst_w 裁剪后的图片的宽度
62 ** $dst_h 裁剪后的图片的高度
63 ** $x 在源图的$x处坐标开始裁剪
64 ** $y 在源图的$y处坐标开始裁剪
65 */
66 public function crop($tmp_image,$dst_w,$dst_h,$x,$y,$path){
67 switch($this->_type){
68 case 'jpeg':
69 $src = imagecreatefromjpeg($tmp_image);
70 break;
71 case 'gif':
72 $src = imagecreatefromgif($tmp_image);
73 break;
74 case 'png':
75 $src = imagecreatefrompng($tmp_image);
76 break;
77 }
78
79 $dst = imagecreatetruecolor($dst_w,$dst_h);
80 $color = imagecolorallocate($dst,255,255,255);
81 imagecolortransparent($dst,$color);
82 imagefill($dst,0,0,$color);
83 $bool = imagecopyresampled($dst,$src, 0,0,$x,$y, $dst_w,$dst_h,$dst_w,$dst_h);
84 switch($this->_type){
85 case 'jpeg':
86 imagejpeg($dst,$path,100);
87 break;
88 case 'gif':
89 imagegif($dst,$path);
90 break;
91 case 'png':
92 imagepng($dst,$path);
93 break;
94 }
95
96 imagedestroy($src);
97 imagedestroy($dst);
98 return $bool;
99 }
100
101 /*
102 ** 等比例缩放图片
103 ** $tmp_image源图
104 ** $dst_w 缩放后的图片宽度
105 ** $dst_h 缩放后的图片高度
106 */
107 public function reduce($tmp_image,$dst_w,$dst_h,$path){
108 switch($this->_type){
109 case 'jpeg':
110 $src = imagecreatefromjpeg($tmp_image);
111 break;
112 case 'gif':
113 $src = imagecreatefromgif($tmp_image);
114 break;
115 case 'png':
116 $src = imagecreatefrompng($tmp_image);
117 break;
118 }
119 $imagex = imagesx($src);
120 $imagey = imagesy($src);
121 $dst = imagecreatetruecolor($dst_w,$dst_h);
122 $color = imagecolorallocate($dst,255,255,255);
123 imagecolortransparent($dst,$color);
124 imagefill($dst,0,0,$color);
125 $bool = imagecopyresampled($dst,$src,0,0,0,0,$dst_w,$dst_h,$imagex,$imagey);
126 switch($this->_type){
127 case 'jpeg':
128 imagejpeg($dst,$path,100);
129 break;
130 case 'gif':
131 imagegif($dst,$path);
132 break;
133 case 'png':
134 imagepng($dst,$path);
135 break;
136 }
137 imagedestroy($src);
138 imagedestroy($dst);
139 return $bool;
140 }
141 }
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
posted on 2016-08-31 11:52
聂文龙 阅读(340)
评论(0) 编辑 收藏 引用