У меня есть код, чтобы сделать превью из исходного изображения пользователя.Мне нужно иметь хардкорную ширину и высоту для большого пальца, и это 160 х 160. Моя проблема не идеальная картинка.Я имею в виду, что когда пользователь хочет добавить img, ведьма шире, чем выше, тогда мой эскиз выглядит плохо и растягивается - и происходит то же самое, когда оригинал img выше, чем шире - тогда большой палец сильно сжимается.Я думал, что я должен манипулировать с функцией imagecopyresampled (), но я думаю, что это был плохой выбор.Мой вопрос: что нужно сделать, чтобы большие пальцы не были сжаты или растянуты и вырезали их, например, из центра исходного изображения?Мой код выглядит следующим образом:
$imgOrginalsize = getimagesize($file);
$ratio = $imgOrginalsize[0] / $imgOrginalsize[1];
$h = 160;
$w = 160;
$file_name = basename($file);
switch (strtolower($imgOrginalsize['mime'])) {
case 'image/jpeg':
$img = imagecreatefromjpeg($file);
$new = imagecreatetruecolor($w, $h);
imagecopyresampled($new, $img, 0, 0, 0, 0, $w, $h, $imgOrginalsize[0], $imgOrginalsize[1]);
imagejpeg($new, $pathToSave . $file_name, 100);
imagedestroy($new);
break;
case 'image/png':
$img = imagecreatefrompng($file);
$new = imagecreatetruecolor($w, $h);
imagecopyresampled($new, $img, 0, 0, 0, 0, $w, $h, $imgOrginalsize[0], $imgOrginalsize[1]);
imagepng($new, $pathToSave . $file_name, 100);
imagedestroy($new);
break;
default:
var_dump('error default');
exit();
}
Теперь большие пальцы выглядят плохо и, например, сжаты - оригинал img намного выше, вы знаете, что я имею в виду, мне не нужны миниатюры всей картинки - я могу обрезатьиз левого верхнего угла (или из центра оригинального img), но я не хочу сжимать или растягивать: