【问题标题】:Find circle and point along circle?找到圆并沿圆指向?
【发布时间】:2012-02-22 21:06:31
【问题描述】:

我在一个正好是 424x318 的图像之上有以下图像

它被包裹在一个 444x338 的 div 中。

我有一个 185x185 的“裁剪工具”(圆形中心部分),但可以调整为最小 50x50 和最大约 300x300(取决于放置)。

裁剪工具的顶部“边框/边距”为 28 像素,左侧“边框/边距”为 20 像素(这些是占据制表符的尺寸,以及紫色线条和白色的东西。但是它可以调整大小,这将通过调整大小百分比增加边框/边距(因此,如果整个事物变为 1.5,则比例将为 *1.5)。

裁剪工具的总尺寸也是 185x185 WxH。

标准位置是中心(66x120)。

好的,既然我们已经解决了所有这些问题,我在尝试找到传递给 imagemagick 进行处理的中心和一个点时遇到了问题。我目前有以下

// Get variables
$left = $val->pos['0']; // this is posted from jquery, using position();
$top = $val->pos['1']; // this is posted from jquery, using position();
$scale = $val->scale; // this is posted from jquery, using width/185

$img = $val->image; // background image
$h = $scale*185;


// CENTER OF THE CIRCLE
$c1 = ($h*.5)+$left-20;
$c2 = ($h*.5)+$top-10;

// LEFT SIDE
$c3 = $left+(20*$scale)-10;
$c4 = ($h*.5)+$top-10;

$scalesize = $c1.",".$c2." ".$c3.",".$c4;

// Crop Size WxH+X+Y
$cr1 = $h-(40*$scale)-17;
$cr2 = $h-(40*$scale)-14;

$cr3 = $left-(20*$scale)+28;
$cr4 = $top+(20*$scale)-3;

$cropsize = $cr1."x".$cr2."+".$cr3."+".$cr4;

然后我将它传递给 imagemagick 使用

$return = exec('convert -size 424x318 xc:none -fill 'filename' -draw "circle '.$scalesize.'" -crop '.$cropsize.' +repage '.newfilename);

我终其一生都无法弄清楚我做错了什么。我一直在玩我最后减去的##,它最终只适用于一种尺寸,但是当我调整裁剪工具的大小时,它把它弄乱了......有什么帮助吗?

【问题讨论】:

    标签: php jquery math imagemagick crop


    【解决方案1】:

    如果边距随比例调整大小,那么您必须相应地缩放常量。

    类似这样的:

    // CENTER OF THE CIRCLE
    $c1 = ($h*.5)+$left-20 * scalesize;  // Apply scale to constant
    $c2 = ($h*.5)+$top-10 * scalesize;  // Apply scale to constant
    

    【讨论】:

      【解决方案2】:

      尝试一次做一个步骤:

      1. 确保您的工具在正确的位置进行裁剪(使用此:Crop or mask an image into a circle);
      2. 确保(仅)调整大小工作正常;
      3. 合并这两个部分。

      【讨论】:

      • 如果您仍然没有发现问题,请发布几个'位置>执行命令'值
      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2014-05-13
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多