我有问题裁剪图像,并认为也许有人可以提供帮助。基本上,我使用jCrop将图像裁剪为指定的x,y,width,height,并在后端使用以下内容来处理图像:
<?php
$image = imagecreatefromjpeg(DOC_ROOT . '/' . $db_image->source);
list($image_width, $image_height) = getimagesize(DOC_ROOT . '/' . $db_image->source);
$cf = $data->cropping_factor;
$new_image = imagecreatetruecolor($cf * $data->crop_data['w'], $cf * $data->crop_data['h']);
imagecopyresampled(
$new_image,
$image,
0, //Destination x coordinate
0, //Destination x coordinate
intval($cf * $data->crop_data['x']), //Source X coordinate
intval($cf * $data->crop_data['y']), //Source Y coordinate
intval($cf * $data->crop_data['w']), //Destination W
intval($cf * $data->crop_data['h']), //Destination H
$image_width, //Original W
$image_height //Original H
);
imagejpeg($new_image, DOC_ROOT . '/' . $db_image->source, 100);
?>
基本上,这段代码离开了我:
Array
(
[0] => Resource id #33 //New Image
[1] => Resource id #31 //Source Image
[2] => 0 //Destination X
[3] => 0 //Destination Y
[4] => 114 //Source X
[5] => 407 //Source Y
[6] => 786 //New Width
[7] => 293 //New Height
[8] => 900 //Original Width
[9] => 700 //Original Height
)
原始图片可在此处找到:http://cl.ly/image/3Y0l1a2h3U2S。已调整大小的图片可在此处找到:http://cl.ly/image/0Q3J2c2q0N1j。
感谢您的帮助。
答案 0 :(得分:0)
经过进一步检查,看起来图像失真(条纹以不同程度倾斜)。有了这些信息,我认为规模必须关闭。因此,我将代码更改为以下内容:
<?php
imagecopyresampled(
$new_image,
$image,
0, //Destination x coordinate
0, //Destination x coordinate
intval($cf * $data->crop_data['x']), //Source X coordinate
intval($cf * $data->crop_data['y']), //Source Y coordinate
$image_width, //Original W
$image_height //Original H
$image_width, //Original W
$image_height //Original H
);
?>
这解决了不缩放新目标图像坐标的问题。