缩略图
public static function zoomImage($filename, $new_w, $new_h, $bigfilename = null) {
$filename = WEB.$filename;
if(!file_exists($filename)) {
Wind_Func::msg('源图片不存在');
exit();
}
if(empty($bigfilename)) {
$bigfilename = Wind_Func::bigPath($filename);
}
rename($filename, $bigfilename);
list($src_w, $src_h, $src_type) = getimagesize($bigfilename);
switch($src_type) {
case 1:
$src_image = @imagecreatefromgif($bigfilename);
break;
case 2:
$src_image = @imagecreatefromjpeg($bigfilename);
break;
case 3:
$src_image = @imagecreatefrompng($bigfilename);
break;
default:
unlink($bigfilename);
Wind_Func::msg('源图片的类型不能识别!');
exit();
}
if($src_w > $new_w || $src_h > $new_h) {
$scale_w = $new_w / $src_w;
$scale_h = $new_h / $src_h;
if($scale_w < $scale_h) {
$new_w = $src_w * $scale_w;
$new_h = $src_h * $scale_w;
} else {
$new_w = $src_w * $scale_h;
$new_h = $src_h * $scale_h;
}
} else {
$new_w = $src_w;
$new_h = $src_h;
}
$dst_image = @imagecreatetruecolor($new_w, $new_h);
imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h);
switch($src_type) {
case 1:
imagegif($dst_image, $filename, 80);
break;
case 2:
imagejpeg($dst_image, $filename, 80);
break;
case 3:
imagepng($dst_image, $filename, 80);
break;
}
imagedestroy($dst_image);
imagedestroy($src_image);
}
public static function bigPath($filename) {
$fs = explode('.', $filename);
$ext = array_pop($fs);
array_push($fs, 'big');
array_push($fs, $ext);
return implode('.', $fs);
}
今天做php缩微图程序,用到了imagecopyresampled函数,在网上找了很多说明也没搞懂后面的参数到底是什么意思,试了很多遍终于明白。
$dst_image:新建的图片
$src_image:需要载入的图片
$dst_x:设定需要载入的图片在新图中的x坐标
$dst_y:设定需要载入的图片在新图中的y坐标
$src_x:设定载入图片要载入的区域x坐标
$src_y:设定载入图片要载入的区域y坐标
$dst_w:设定载入的原图的宽度(在此设置缩放)
$dst_h:设定载入的原图的高度(在此设置缩放)
$src_w:原图要载入的宽度
$src_h:原图要载入的高度
bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )