Этот код делает это с функциями GD.
Исходное изображение может быть в формате JPEG, PNG, GIF или BMP.Если вы знаете формат заранее, вы можете избавиться от оператора switch.Результат сохраняется в формате JPEG.
$srcPath = "your source image path goes here";
$dstPath = "your destination image path goes here";
$size = "90x90";
list($w, $h, $type) = getimagesize($srcPath);
switch ($type) {
case IMAGETYPE_JPEG:
$src = imagecreatefromjpeg($srcPath);
break;
case IMAGETYPE_PNG:
$src = imagecreatefrompng($srcPath);
break;
case IMAGETYPE_GIF:
$src = imagecreatefromgif($srcPath);
break;
case IMAGETYPE_BMP:
$src = imagecreatefrombmp($srcPath);
break;
}
list($dst_w, $dst_h) = explode('x', $size);
$dst = imagecreatetruecolor($dst_w, $dst_h);
$dst_x = $dst_y = 0;
$src_x = $src_y = 0;
if ($dst_w/$dst_h < $w/$h) {
$src_w = $h*($dst_w/$dst_h);
$src_h = $h;
$src_x = ($w-$src_w)/2;
$src_y = 0;
} else {
$src_w = $w;
$src_h = $w*($dst_h/$dst_w);
$src_x = 0;
$src_y = ($h-$src_h)/2;
}
imagecopyresampled($dst, $src, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
imagejpeg($dst, $dstPath);
imagedestroy($src);
imagedestroy($dst);