如何使用jquery imgAreaSelect使用php裁剪图像?

RTB*_*RTB 6 php image crop jquery-plugins

我正在使用以下javascript代码来实现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);            
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这涉及以下(示例)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>
Run Code Online (Sandbox Code Playgroud)

示例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);
Run Code Online (Sandbox Code Playgroud)

上面的脚本可以工作,但它以错误的方式使用坐标/宽度/高度.我总是在调整大小的图像中留下一个大的黑色边框:

例如错误的裁剪图像

谁能让我朝着正确的方向前进?

Mem*_*sen 6

替换imagecopyresampled以下开头的行应该这样做:

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

imagecopyresampled() 将从宽度为src_w的src_image和高度为src_h的位置(src_x,src_y)取一个矩形区域,并将其放置在dst_image的宽度为dst_w且高度为dst_h的矩形区域(dst_x,dst_y).