imagecopyresampled не выбирая определенные координаты изображения

Я добавил функцию обрезки в CMS социальной сети, написанную на PHP под названием Sngine.
Я добавил плагин jquery, чтобы пользователи могли выбирать нужную область изображения.
Я использую imagecopyresampled для выбора желаемых координат изображения, однако что-то идет не так и не работает должным образом, большая часть изображения не копируется, а окончательный вывод все еще сохраняет черный фон.

Ниже оригинальное изображение
Исходное изображение

Это окончательный вывод

Окончательный вывод

Я действительно не уверен, что я делаю неправильно, многие учебники используют один и тот же алгоритм, чтобы сделать обрезку. Координаты корректно передаются из плагина кропа в скрипт php.

Ниже мой код

    <?php
/**
* ajax -> data -> report
*
* @package Sngine
* @author Zamblek
*/

// fetch bootstrap
require('../../../bootstrap.php');

// fetch image class
require('../../class-image.php');
// check AJAX Request
is_ajax();

// user access

user_access(true);
try {
$x = $_POST['crop']['x'];
$y = $_POST['crop']['y'];
$x2 = $_POST['crop']['x2'];
$y2 = $_POST['crop']['y2'];
$width = $_POST['crop']['w'];
$height = $_POST['crop']['h'];

$file_path = $_POST['crop_file'];
$file_path = $system['uploads_directory'].'/'.$file_path;
$file_path = '../../../'.$file_path;

$image = new Image($file_path);
$type = $image->get_type();

//crop and resize image
$newImage = imagecreatetruecolor($width,$height);

switch($type) {
case "image/gif":
$source = imagecreatefromgif($file_path);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source = imagecreatefromjpeg($file_path);
break;
case "image/png":
case "image/x-png":
$source = imagecreatefrompng($file_path);
break;
}
$src_w = imagesx($source);
$src_h = imagesy($source);


//imagecopy($newImage,$source,0,0,$x,$y,$width,$height);
imagecopyresampled($newImage,$source,0,0,$x,$y,$width,$height,$src_w,$src_h);



switch($type) {
case "image/gif":
imagegif($newImage,$file_path);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$file_path,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$file_path);
break;
}
imagedestroy($newImage);
return_json(['file' => $_POST['crop_file']]);

} catch (Exception $e){
modal(ERROR, __("Error"), $e->getMessage());
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]