php 等比例缩略图,php等比例缩略图

缩略图

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 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值