Korzystam z następującego kodu javascript do instanciete jquery imgAreaSelect, aby przyciąć obraz.Jak przyciąć obraz za pomocą php za pomocą 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);
}
});
});
Wiąże się następująco (przykład) Kod 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>
Działa to doskonale, Dostaję wszystkie odpowiednie informacje z powrotem do php przy składaniu formularza. Jednak teraz muszę użyć php, aby zmodyfikować obraz za pomocą współrzędnych przesłanych przez formularz. I to było trudniejsze niż myślałem.
$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);
Powyższy skrypt działa, ale wykorzystuje współrzędne/szerokość/wysokość w niewłaściwy sposób. Ja zawsze pozostały z wielkim czarnym obramowaniem w zmienionym rozmiarze:
Czy ktoś postawił mnie w dobrym kierunku?