PHP – обрезание изображения с помощью imagecopyresampled ()?

Я хотел бы обрезать изображение, используя imagecreatetruecolor, и он всегда убирает его, оставляя черные области, или масштаб слишком велик. Я хочу, чтобы изображение было ровно шириной 191px и высотой 90px, поэтому мне также нужно изменить размер изображения, а также урожай, потому что это соотношение необходимо сохранить. Ну, есть несколько примеров проекта:

введите описание изображения здесь

Сценарий изменения размера (упрощенный) выглядит следующим образом:

$src_img=imagecreatefromjpeg($photoTemp); list($width,$height)=getimagesize($photoTemp); $dst_img=imagecreatetruecolor(191, 90); imagecopyresampled($dst_img, $src_img, 0, 0, $newImage['crop']['x'], $newImage['crop']['y'], $newImage['crop']['width'], $newImage['crop']['height'], $width, $height); 

В массив $ newImage ['crop'] входят:

 ['x'] => $_POST['inp-x'] ['y'] => $_POST['inp-x'] ['width'] => $_POST['inp-width'] ['height'] => $_POST['inp-height'] 

Но я получаю:

введите описание изображения здесь

Кто-нибудь видит, что я делаю неправильно?

Спасибо, Майк.

Solutions Collecting From Web of "PHP – обрезание изображения с помощью imagecopyresampled ()?"

вы тоже можете это сделать, я сам это сделал, и он работает

(x1, y1) =>, где начинается урожай

(x2, y2) => где заканчивается посев

 $filename = $_GET['imageurl']; $percent = 0.5; list($width, $height) = getimagesize($filename); $new_width = $_GET['x2'] - $_GET['x1']; $new_height = $_GET['y2'] - $_GET['y1']; $image_p = imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0 , $_GET['x1'] , $_GET['y1'] , $new_width, $new_height, $new_width, $new_height); // Outputs the image header('Content-Type: image/jpeg'); imagejpeg($image_p, null, 100); 

Пытаться

 <?php $dst_img = imagecreatetruecolor($newImage['crop']['width'], $newImage['crop']['height']); imagecopyresampled($dst_img, $src_img, 0, 0, $newImage['crop']['x'], $newImage['crop']['y'], 0, 0, $width, $height); 

Хорошо, я сам нашел проблему, код должен выглядеть следующим образом:

 imagecopyresampled($dst_img, $src_img, 0, 0, $newImage['crop']['x'], $newImage['crop']['y'], $newImage['newWidth'], 191, 90, $newImage['crop']['height']); 

Также есть функция imagecrop , которая позволяет передавать массив с значениями x , y , width и height .