I used this code called by jQuery ajax:
$t_width = 270; // Maximum thumbnail width
$t_height = 304; // Maximum thumbnail height
$new_name = $IMAGE."_crop.jpg";
$path = "{YOUR FILE PATH}";
$img = $_REQUEST['originalFile'];
$tamanios = getimagesize($path.$img);
$ratio = $_REQUEST['scale'];
$w = $_REQUEST['w'];
$h = $_REQUEST['h'];
$x = $_REQUEST['x'];
$y = $_REQUEST['y'];
$rotacion = $_REQUEST['angle'];
$nimg = imagecreatetruecolor($t_width,$t_height);
/*
* TODO: Check if PNG or other image type
*/
$im_src = imagecreatefrompng($path.$img);
imagealphablending( $im_src, false );
imagesavealpha( $im_src, true );
$im_src = imagerotate($im_src, $rotacion * -1, 0);
imagecopyresampled($nimg, $im_src, 0, 0, ceil($x/$ratio), ceil($y/$ratio), $t_width, $t_height, $t_width/$ratio, $t_height/$ratio);
imagejpeg($nimg,$path.$new_name,90);
echo $new_name."?".time();