0

在 PHP 中,我试图弄清楚如何有效地计算 X 中的位置和宽度。

给定的是一个以像素为单位的数组。但它们都具有相同的宽度和 y。所以当它们在同一时期时,它们会相互叠加。我希望它们更小,并且基于相关的其他块位于正确的 Y 位置。

对于示例中的星期五,数组以这种方式开始:

{
   "2013-01-11":[
      {
         "width":114,
         "left":0,
         "top":260,
         "height":100
      },
      {
         "width":114,
         "left":0,
         "top":300,
         "height":100
      },
      {
         "width":114,
         "left":0,
         "top":360,
         "height":100
      },
      {
         "width":114,
         "left":0,
         "top":400,
         "height":100
      }
    ]
}

在打印屏幕中,您可以看到我想要的样子。一个区块在同一时间段内也可以有 3 个或更多区块。

现在的情况

4

2 回答 2

0

两种天真的方法是跟踪哪些时间很忙,或者通过根据一天的谨慎步骤(08:00、08:30、09:00 等)保留查找表,或者通过检查所有以前的事件同一天,并以这种方式检测重叠。

由于一天的事件数量和离散间隔的数量都相当低,我认为幼稚的方法可以很好地工作,并且以后很容易理解。

这假定事件按开始时间排序。

在伪代码/pythonish 中:

intervals = []

for event in events:
    time = event['starttime']
    columnoffset = 0

    while (time < event['endtime']):
        # check if this time space already has events assigned
        if (intervals[time] and columnoffset < intervals[time]):
            columnoffset = intervals[time]

        # count the event
        intervals[time]++

        # increment time bin
        time += discreet_step_size

    # set new x position based on how many columns were busy within this interval
    event['x'] = event['x'] + columnoffset * xoffset
于 2012-11-16T10:30:07.927 回答
-1

/* 使用 GD 库*/

$im=imagecreatefromjpeg("imagename.jpg");

$w = imagesx($im);
$h = imagesy($im);

echo "width of page=".$w."</br>";//width of whole page
echo "height of page=".$h."</br>";//height of whole page

//reading pixels by pixels
for($i=0;$i<$w;$i++){

for($j=0;$j<$h;$j++){

        $rgb = imagecolorat($im,$i,$j);
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8) & 0xFF;
        $b = $rgb & 0xFF;

        //comparing the value of rgb if found then excute  
        if ($r= && $ $g= && $b=)
        {
                   apply condition here;   
        }
    }
 } 
于 2012-11-16T10:08:11.090 回答