Обработка изображений — PHP Обрезка Изменение размера создает границы

Используя пример в Croppic, Я обрезаю границы на одной или нескольких сторонах изображения, когда обрезаю некоторые изображения. Пример:

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

Вот код, который я использую для обработки изображения:

     // original sizes
$imgInitW = $request->get('imgInitW');
$imgInitH = $request->get('imgInitH');
// resized sizes
$imgW = $request->get('imgW');
$imgH = $request->get('imgH');
// offsets
$imgY1 = $request->get('imgY1');
$imgX1 = $request->get('imgX1');
// crop box
$cropW = $request->get('cropW');
$cropH = $request->get('cropH');
// rotation angle

$output_filename = sys_get_temp_dir() . "/croppedImg_" . rand();

$source_image = imagecreatefromjpeg($media->getPath());

$type = '.jpeg';

// resize the original image to size of editor
$resizedImage = imagecreatetruecolor($imgW, $imgH);

imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW, $imgH, $imgInitW, $imgInitH);

// rotate the rezized image
$rotated_image = imagerotate($resizedImage, -$angle, 0);
// find new width & height of rotated image
$rotated_width = imagesx($rotated_image);
$rotated_height = imagesy($rotated_image);
// diff between rotated & original sizes
$dx = $rotated_width - $imgW;
$dy = $rotated_height - $imgH;
// crop rotated image to fit into original rezized rectangle
$cropped_rotated_image = imagecreatetruecolor($imgW, $imgH);
imagecolortransparent($cropped_rotated_image, imagecolorallocate($cropped_rotated_image, 0, 0, 0));

imagecopyresampled($cropped_rotated_image, $rotated_image, 0, 0, $dx / 2, $dy / 2, $imgW, $imgH, $imgW, $imgH);
// crop image into selected area
$final_image = imagecreatetruecolor($cropW, $cropH);
imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0));
imagecopyresampled($final_image, $cropped_rotated_image, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH);
// finally output png image
//imagepng($final_image, $output_filename.$type, $png_quality);
imagejpeg($final_image, $output_filename . $type, '100');

Обычно это происходит только тогда, когда я уменьшаю изображение, насколько это возможно в окно.

Я в растерянности и попытался настроить каждый параметр, который я могу найти. Есть идеи?

1

Решение

Я действительно нашел ответ Вот. Я применил раздвоенную версию, и она работает.

0

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

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