您的位置:首页 > 编程语言 > PHP开发

php实现等比例生成图片缩略图不失真

2016-10-16 23:52 561 查看
//等比例生成图片缩略图不失真

function resizeImage($im,$maxwidth,$maxheight,$name,$filetype){

    $pic_width = imagesx($im);

    $pic_height = imagesy($im);

    if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)){

        if($maxwidth && $pic_width>$maxwidth){

            $widthratio = $maxwidth/$pic_width;

            $resizewidth_tag = true;

        }

        if($maxheight && $pic_height>$maxheight) {

            $heightratio = $maxheight/$pic_height;

            $resizeheight_tag = true;

        }

        if($resizewidth_tag && $resizeheight_tag){

            if($widthratio<$heightratio)

                $ratio = $widthratio;

            else

                $ratio = $heightratio;

        }

        if($resizewidth_tag && !$resizeheight_tag)

            $ratio = $widthratio;

        if($resizeheight_tag && !$resizewidth_tag)

            $ratio = $heightratio;

        $newwidth = $pic_width * $ratio;

        $newheight = $pic_height * $ratio;

        if(function_exists("imagecopyresampled")){

            $newim = imagecreatetruecolor($newwidth,$newheight);

           imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//图像边缘比较平滑.质量较好(但速度比 ImageCopyResized() 慢

        }

        else{

            $newim = imagecreate($newwidth,$newheight);

           imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//在所有GD版本中有效,缩放图像的算法比较粗糙

        }

        $name = $name.$filetype;

        imagejpeg($newim,$name);

        imagedestroy($newim);

    }

    else{

        $name = $name.$filetype;

        imagejpeg($im,$name);

    }          

}

$im = imagecreatefromjpeg('1.jpg');
resizeImage($im,250,215,'5','.jpg');
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: