case 'image/jpeg':
$source_image = imagecreatefromjpeg($source_path);
break;
case 'image/png':
$source_image = imagecreatefrompng($source_path);
break;
default:
return false;
break;
}
$target_image = imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_image,$source_image,$target_width,$target_height,$source_width,$source_height);
//header('Content-type: image/jpeg');
$imgArr = explode('.',$source_path);
$target_path = $imgArr[0] . '_new.' . $imgArr[1];
imagejpeg($target_image,$target_path,100);
}
用法:
- myImageResize($filename,200,200); //最大宽高
- myImageResize($filename,'width'); //宽度固定
- myImageResize($filename,'height'); //高度固定
剪切图片为固定大小:
if ($source_ratio > $target_ratio){
$cropped_width = $source_width;
$cropped_height = $source_width * $target_ratio;
$source_x = 0;
$source_y = ($source_height - $cropped_height) / 2;
}elseif ($source_ratio < $target_ratio){ // 源图过宽
$cropped_width = $source_height / $target_ratio;
$cropped_height = $source_height;
$source_x = ($source_width - $cropped_width) / 2;
$source_y = 0;
}else{ // 源图适中
$cropped_width = $source_width;
$cropped_height = $source_height;
$source_x = 0;
$source_y = 0;
}
switch ($source_mime){
case 'image/gif':
$source_image = imagecreatefromgif($source_path);
break;
case 'image/jpeg':
$source_image = imagecreatefromjpeg($source_path);
break;
case 'image/png':
$source_image = imagecreatefrompng($source_path);
break;
default:
return false;
break;
}
$target_image = imagecreatetruecolor($target_width,$target_height);
$cropped_image = imagecreatetruecolor($cropped_width,$cropped_height);
// 裁剪
imagecopy($cropped_image,$source_x,$source_y,$cropped_width,$cropped_height);
// 缩放
imagecopyresampled($target_image,$cropped_image,$cropped_height);
$dotpos = strrpos($source_path,'.');
$imgName = substr($source_path,$dotpos);
$suffix = substr($source_path,$dotpos);
$imgNew = $imgName . '_small' . $suffix;
imagejpeg($target_image,$imgNew,100);
imagedestroy($source_image);
imagedestroy($target_image);
imagedestroy($cropped_image);
}