等比例放大或缩小图片:[放大图片可能会引起变形]
代码如下:
function resizeimage($srcfile,$mySize){
$size=getimagesize($srcfile);
switch($size[2]){
case 1:
$src_img=imagecreatefromgif($srcfile);
$output = 'imagegif';
$mime = 'gif';
break;
case 2:
$src_img=imagecreatefromjpeg($srcfile);
$output = 'imagejpeg';
$mime = 'jpeg';
break;
case 3:
$src_img=imagecreatefrompng($srcfile);
$output = 'imagepng';
$mime = 'png';
break;
}
//源图片的宽度和高度
$oldImg['w']=imagesx($src_img);
$oldImg['h']=imagesy($src_img);
if ($oldImg['w']<=$mySize['w'] && $oldImg['h']<$mySize['h']){
$rate1=$mySize['w']/$oldImg['w'];
$rate2=$mySize['h']/$oldImg['h'];
// 按比例小的缩放
if ($rate1>$rate2){$rate=$rate2;}else{$rate=$rate1;}
}elseif ($oldImg['w']>$mySize['w'] && $oldImg['h']<$mySize['h']){
// 按较大比例着缩放
$rate=$mySize['w']/$oldImg['w'];
}elseif ($oldImg['w']<$mySize['w'] && $oldImg['h']>$mySize['h']){
$rate=$mySize['h']/$oldImg['h'];
}elseif ($oldImg['w']>$mySize['w'] && $oldImg['h']>$mySize['h']){
$rate1=$mySize['w']/$oldImg['w'];
$rate2=$mySize['h']/$oldImg['h'];
// 按比例小的缩放
if ($rate1>$rate2){$rate=$rate2;}else{$rate=$rate1;}
}
$newImg['w']=$oldImg['w']*$rate;
$newImg['h']=$oldImg['h']*$rate;
// 采样,缩放
$thumb_img = imagecreatetruecolor($newImg['w'], $newImg['h']);
// echo $thumb_img;
// die;
// 设置采样区域
$src_area_x = 0;
$src_area_y = 0;
$src_area_w = $oldImg['w'];
$src_area_h = $oldImg['h'];
// 设置拷贝区域
$thumb_area_x = 0;
$thumb_area_y =0;
$thumb_area_w = $newImg['w'];
$thumb_area_h = $newImg['h'];
imagecopyresampled($thumb_img, $src_img, $thumb_area_x, $thumb_area_y, $src_area_x, $src_area_y, $thumb_area_w, $thumb_area_h, $src_area_w, $src_area_w);
// 输出
header("Content-type:image/{$mime}");
$output($thumb_img);
// 销毁资源
// 销毁画布
imagedestroy($img);
imagedestroy($thumb_img);
}
$mySize=array('w'=>690,'h'=>56);
$imgSize=resizeimage("22.png",$mySize);