【发布时间】:2013-03-06 01:06:50
【问题描述】:
我试图弄清楚如何从一个小得多的图像计算全尺寸图像的裁剪坐标,假设全尺寸图像为 1775 x 2664,即用户在裁剪页面上看到的图像(使用 jCrop ) 为 533 X 800。
小图上的裁剪坐标为:20,11,230,305
(从左开始,从上开始,从左结束,从上结束)
如何将坐标缩放到全尺寸图像。
我需要允许用户在预览页面上选择图片的一部分,然后使用php从全尺寸图片中提取图片的适当部分..
【问题讨论】:
我试图弄清楚如何从一个小得多的图像计算全尺寸图像的裁剪坐标,假设全尺寸图像为 1775 x 2664,即用户在裁剪页面上看到的图像(使用 jCrop ) 为 533 X 800。
小图上的裁剪坐标为:20,11,230,305
(从左开始,从上开始,从左结束,从上结束)
如何将坐标缩放到全尺寸图像。
我需要允许用户在预览页面上选择图片的一部分,然后使用php从全尺寸图片中提取图片的适当部分..
【问题讨论】:
给你一些参考:http://en.wikipedia.org/wiki/Rule_of_three_%28mathematics%29#Rule_of_Three
// assuming fixed ratio on width and height
// which is the case in your example: ~33% for both dimensions
$FULL_WIDTH = 1775;
$SCALED_WIDTH = 533;
$ratio = $SCALED_WIDTH / $FULL_WIDTH;
$scaled_crop_coordinates = array(20, 11, 230, 305);
$full_crop_coordinates = array();
foreach($scaled_crop_coordinates as $val)
{
$full_crop_coordinates[] = floor($val / $ratio);
}
var_dump($full_crop_coordinates);
【讨论】:
应该可以的:
left = 20 * (1775/533)
top = 11 * (2664/800)
right = 230 * (1775/533)
bottom = 305 * (2664/800)
【讨论】: