php等比例缩放图片
今天在做头像这块的功能,先是上传了一张图片,然后保存成大的头像,再其次将其缩小保存为小头像。
以下是我改过后的操作方法
[php]
//图片的缩放
public 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);
}
[/php]
这里要提醒注意的是imagejpeg()这个,前面我没有加后面的保存路径,一直不成功!后来才知道要加一个保存路径!