php缩放图像裁剪

时间:2012-06-15 01:21:13

标签: php jquery gd

我的文件系统上有一个图像。我在带有裁剪工具的页面上显示它,但是我将其缩小以适应裁剪工具区域(或者如果图像小于区域,则将其拉伸以占据整个区域)。在此页面上,用户将选择要保留的照片区域(使用jcrop)并提交。

在后端,我将等待上一页的坐标。我会得到x1,x2,y1,y2,w和h。

问题在于,已调整大小的图像(显示给用户的图像)上的坐标在全尺寸图像上不易使用,因为它们会占据比图像小的区域(尺寸小到适合屏幕)或它将比图像大(它被拉伸以适应屏幕)。

我可以获得原始照片的高度和宽度以及它被强制进入的静态宽度和高度。

如果给定已知尺寸,您如何找到正确的图像区域?

我目前的代码在这里

$target_width = 150;
$target_height = 150;
$jpeg_quality= 90;
$tmp =explode('/',$_POST['filename']); 

$src = '../uploads/'.$tmp[count($tmp)-1];

$x1 = $_POST['x1'];
$x2 = $_POST['x2'];
$y1 = $_POST['y1'];
$y2 = $_POST['y2'];
$w = $_POST['w'];
$h = $_POST['h'];

$image = imagecreatefromjpeg($src);
$final = imagecreatetruecolor($target_width, $target_height);

imagecopyresampled($final, $image, 0, 0, $x1, $y1, $target_width, $target_height, $w, $h);
imagejpeg($final, $src, $jpeg_quality);

2 个答案:

答案 0 :(得分:1)

也许我的问题不是很清楚(我也很难向某人解释IRL)但我的回答应该很清楚。

我的文件系统上有一个图像($ _POST ['image_path']可以使用路径)和一个看起来像“”的图像标记。我从图像标签中获取了一些jquery魔法数据。

'比例'就是答案 h_limit是img标记的高度约束 w_limit是img标签的宽度约束

$h_limit = $_POST['h_limit'];
$w_limit = $_POST['w_limit'];

list($width, $height) = getimagesize($_POST['image_path']);
$w_mult = $width/$w_limit;
$h_mult = $height/$h_limit;

然后我就可以了

imagecopyresampled($final, $image, 0, 0, $x1*$w_mult, $y1*$h_mult, $target_width, $target_height, $w*$w_mult, $h*$h_mult);

答案 1 :(得分:0)

我不确定为什么显示尺寸不同但是你不能只跟踪浏览器中的显示尺寸(我不知道你的代码中是否修复了这个问题,所以一些javascript和额外的形式字段可能是必要的)然后,在PHP中,先调整大小,然后裁剪

原始图片--->调整大小为用户在浏览器中看到的大小--->根据用户提供的坐标进行裁剪