php等比例缩略图

2010-11-08 18:12  1879人阅读  评论 (0)
Tags: 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 )
豫ICP备09035262号-1