您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 衡水分类信息网,免费分类信息发布

php 加水印 等比例缩放程序

2024/3/15 4:34:16发布37次查看
php 加水印 等比例缩放程序
function watermark($desimg,$waterimg,$positon=1,$saveas=false,$alpha=30) 
011 { 
012 //获取目图片的基本信息 
013 $temp=pathinfo($desimg); 
014 $name=$temp[basename];//文件名 
015 $path=$temp[dirname];//文件所在的文件夹 
016 $extension=$temp[extension];//文件扩展名 
017 if($saveas) 
018 { 
019 //需要另存为 
020 $name=rtrim($name,.$extension)._2.;//重新命名 
021 $savepath=$path./.$name.$extension; 
022 } 
023 else
024 { 
025 //不需要另存为则覆盖原图 
026 $savepath=$path./.$name; 
027 } 
028 $info=getimageinfo($desimg);//获取目标图片的信息 
029 $info2=getimageinfo($waterimg);//获取水印图片的信息 
030   
031 $desimg=create($desimg);//从原图创建 
032 $waterimg=create($waterimg);//从水印图片创建 
033 //位置1:顶部居左 
034 if($positon==1) 
035 { 
036 $x=0; 
037 $y=0; 
038 } 
039 //位置2:顶部居右 
040 if($positon==2) 
041 { 
042 $x=$info[0]-$info2[0]; 
043 $y=0; 
044 } 
045 //位置3:居中 
046 if($positon==3) 
047 { 
048 $x=($info[0]-$info2[0])/2; 
049 $y=($info[1]-$info2[1])/2; 
050 } 
051 //位置4:底部居左 
052 if($positon==4) 
053 { 
054 $x=0; 
055 $y=$info[1]-$info2[1]; 
056 } 
057 //位置5:底部居右 
058 if($positon==5) 
059 { 
060 $x=$info[0]-$info2[0]; 
061 $y=$info[1]-$info2[1]; 
062 } 
063 imagecopymerge($desimg,$waterimg,$x,$y,0,0,$info2[0],$info2[1],$alpha); 
064 imagejpeg($desimg,$savepath); 
065 imagedestroy($desimg); 
066 imagedestroy($waterimg); 
067 return $savepath; 
068 } 
069 /** 
070 * 获取图片的信息,width,height,image/type 
071 * @param string $src 图片路径 
072 * @return 数组 
073 * **/
074 function getimageinfo($src) 
075 { 
076 return getimagesize($src); 
077 } 
078 /** 
079 * 创建图片,返回资源类型 
080 * @param string $src 图片路径 
081 * @return resource $im 返回资源类型  
082 * **/
083 function create($src) 
084 { 
085 $info=getimageinfo($src); 
086 switch ($info[2]) 
087 { 
088 case 1: 
089 $im=imagecreatefromgif($src); 
090 break; 
091 case 2: 
092 $im=imagecreatefromjpeg($src); 
093 break; 
094 case 3: 
095 $im=imagecreatefrompng($src); 
096 break; 
097 } 
098 return $im; 
099 } 
100 /** 
101 * 缩略图主函数 
102 * @param string $src 图片路径 
103 * @param int $w 缩略图宽度 
104 * @param int $h 缩略图高度 
105 * @return mixed 返回缩略图路径 
106 * **/
107   
108 function resize($src,$w,$h) 
109 { 
110 $temp=pathinfo($src); 
111 $name=$temp[basename];//文件名 
112 $dir=$temp[dirname];//文件所在的文件夹 
113 $extension=$temp[extension];//文件扩展名 
114 $savepath={$dir}/{$name}.thumb.jpg;//缩略图保存路径,新的文件名为*.thumb.jpg 
115   
116 //获取图片的基本信息 
117 $info=getimageinfo($src); 
118 $width=$info[0];//获取图片宽度 
119 $height=$info[1];//获取图片高度 
120 $per1=round($width/$height,2);//计算原图长宽比 
121 $per2=round($w/$h,2);//计算缩略图长宽比 
122   
123 //计算缩放比例 
124 if($per1>$per2||$per1==$per2) 
125 { 
126 //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先 
127 $per=$w/$width; 
128 } 
129 if($per1
130 { 
131 //原图长宽比小于缩略图长宽比,则按照高度优先 
132 $per=$h/$height; 
133 } 
134 $temp_w=intval($width*$per);//计算原图缩放后的宽度 
135 $temp_h=intval($height*$per);//计算原图缩放后的高度 
136 $temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布 
137 $im=create($src); 
138 imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height); 
139 if($per1>$per2) 
140 { 
141 imagejpeg($temp_img,$savepath); 
142 return addbg($savepath,$w,$h,w); 
143 //宽度优先,在缩放之后高度不足的情况下补上背景 
144 } 
145 if($per1==$per2) 
146 { 
147 imagejpeg($temp_img,$savepath); 
148 return $savepath; 
149 //等比缩放 
150 } 
151 if($per1
152 { 
153 imagejpeg($temp_img,$savepath); 
154   
155 return addbg($savepath,$w,$h,h); 
156 //高度优先,在缩放之后宽度不足的情况下补上背景 
157 } 
158 } 
159 /** 
160 * 添加背景 
161 * @param string $src 图片路径 
162 * @param int $w 背景图像宽度 
163 * @param int $h 背景图像高度 
164 * @param string $first 决定图像最终位置的,w 宽度优先 h 高度优先 wh:等比 
165 * @return 返回加上背景的图片 
166 * **/
167 function addbg($src,$w,$h,$fisrt=w) 
168 { 
169 $bg=imagecreatetruecolor($w,$h); 
170 $white = imagecolorallocate($bg,255,255,255); 
171 imagefill($bg,0,0,$white);//填充背景 
172   
173 //获取目标图片信息 
174 $info=getimageinfo($src); 
175 $width=$info[0];//目标图片宽度 
176 $height=$info[1];//目标图片高度 
177 $img=create($src); 
178 if($fisrt==wh) 
179 { 
180 //等比缩放 
181 return $src; 
182 } 
183 else 
184 { 
185 if($fisrt==w) 
186 { 
187 $x=0; 
188 $y=($h-$height)/2;//垂直居中 
189 } 
190 if($fisrt==h) 
191 { 
192 $x=($w-$width)/2;//水平居中 
193 $y=0; 
194 } 
195 imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100); 
196 imagejpeg($bg,$src); 
197 imagedestroy($bg); 
198 imagedestroy($img); 
199 return $src; 
200 } 
201   
202 }
衡水分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录