等比例缩放图片


/**
 * 等比例绽放图片大小
 */
 function drawImg($from,$w=100,$h=100,$newfile){

    $info = getimagesize($from);

    switch ($info[2]){
        case 1:
            $im = imagecreatefromgif($from);
            break;

        case 2:
            $im = imagecreatefromjpeg($from);
            break;

        case 3:
            $im = imagecreatefrompng($from);
            break;

        default:
            exit('不支持的图像格式');
            break;
    }

    $temp = pathinfo($from);
    $name = $temp["basename"];//文件名
    $dir = $temp["dirname"];//文件所在的文件夹
    $extension = $temp["extension"];//文件扩展名
    $width = $info[0];//获取图片宽度
    $height = $info[1];//获取图片高度
    $per1 = round($width/$height,2);//计算原图长宽比
    $per2 = round($w/$h,2);//计算缩略图长宽比

    //计算缩放比例
    if($per1>$per2||$per1==$per2) {
        //原图长宽比大于或者等于缩略图长宽比,则按照宽度优先
        $per=$w/$width;
    }

    if($per1<$per2) {
        //原图长宽比小于缩略图长宽比,则按照高度优先
        $per=$h/$height;
    }
    $temp_w = intval($width*$per);//计算原图缩放后的宽度
    $temp_h = intval($height*$per);//计算原图缩放后的高度
    $dst_im = imagecreatetruecolor($temp_w, $temp_h);

    //调整大小
    imagecopyresized($dst_im, $im, 0, 0, 0, 0, $temp_w, $temp_h, $width, $height);
    //输出缩小后的图像
    //exit($newfile);

    imagejpeg($dst_im,$dir.'/'.$newfile);
    imagedestroy($dst_im);
    imagedestroy($im);
}


posted @ 2017-06-13 15:10  oneboi  阅读(113)  评论(0)    收藏  举报