Intereting Posts
Я хочу разбиение на страницы на странице параметров плагина wordpress? Проблемы с сохранением сеанса, получение PHP Неустранимая ошибка: Исключение выбрано без рамки стека Неизвестно в строке 0 AngularJS потоковое аудио с сервера PHP 2 Утечка памяти при запуске Drupal на linux apache, но одно и то же приложение не будет протекать на сервере windows альтернативы simpleXML для анализа XML-файлов с помощью PHP Переменная сеанса PHP не обрабатывается, но ISSET говорит, что она работает & 0 PHP, Yii2 Фильтрация GridView по реляционной ценности Создайте трехзначную миллисекунду с php Как я могу получить все мои фотографии из Facebook с помощью PHP SDK? php Вызов для функции-функции-члена () на null Как я могу получить день определенной даты с PHP Данные запроса REST не могут быть прочитаны методом «put» Вызов cron дважды или три раза Проблема с кодировкой запроса php mysql Результаты запроса MySQLi: лучший подход, вы закрываете, бесплатно, оба?

Как обрезать изображение с помощью php с помощью jquery imgAreaSelect?

Я использую следующий код javascript для instanciete jquery imgAreaSelect, чтобы обрезать изображение.

$(document).ready(function () { $('#ladybug').imgAreaSelect({ onSelectEnd: function (img, selection) { $('input[name="x1"]').val(selection.x1); $('input[name="y1"]').val(selection.y1); $('input[name="x2"]').val(selection.x2); $('input[name="y2"]').val(selection.y2); } }); }); 

Это относится к следующему (пример) html-коду:

 <div> <img id="ladybug" src="ladybug.jpg" alt="" /> </div> <div> <form action="#" method="post"> <input id="x1" type="hidden" name="x1" value="" /> <input id="y1" type="hidden" name="y1" value="" /> <input id="x2" type="hidden" name="x2" value="" /> <input id="y2" type="hidden" name="y2" value="" /> <input type="submit" name="submit" value="Submit" /> </form> </div> 

Пример imgAreaSelect

Это работает отлично, я получаю правильную информацию обратно на php при отправке формы. Однако теперь мне нужно использовать php для изменения изображения по координатам, которые только что отправили. И это было труднее, чем я думал.

 $image_info = getimagesize($filename); $image = imagecreatefromjpeg($filename); $width = imagesx($image); $height = imagesy($image); $resized_width = ((int)$formData["x2"]) - ((int)$formData["x1"]); $resized_height = ((int)$formData["y2"]) - ((int)$formData["y1"]); $resized_image = imagecreatetruecolor($resized_width, $resized_height); imagecopyresampled($resized_image, $image, 0, 0, (int)$formData["x1"], (int)$formData["y1"], $resized_width , $resized_height, $width, $height); imagejpeg($resized_image, $filename); 

Вышеупомянутый скрипт работает, но он использует координаты / ширину / высоту неправильно. я всегда остаюсь с большой черной рамкой в ​​измененном изображении:

Пример неправильного обрезанного изображения

Может ли кто-нибудь настроить меня в правильном направлении?

Замена строки, начинающейся с imagecopyresampled со следующим, должна сделать это:

imagecopyresampled($resized_image, $image, 0, 0, (int)$formData["x1"], (int)$formData["y1"], $width, $height, $width, $height);

imagecopyresampled() примет прямоугольную область из src_image ширины src_w и высоты src_h в позиции (src_x, src_y) и поместит ее в прямоугольную область dst_image ширины dst_w и высоту dst_h в позиции (dst_x, dst_y).