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

2つの単純なアプローチは、1日の目立たない手順(08:00、08:30、09:00など)に基づいてルックアップテーブルを保持するか、以前のすべてのイベントをチェックすることによって、どの時間がビジーであるかを追跡することです。同じ日に、その方法でオーバーラップを検出します。

1日のイベント数と目立たない間隔の両方がかなり少ないので、素朴なアプローチはうまく機能し、後で簡単に理解できると思います。

これは、イベントが開始時刻でソートされていることを前提としています。

擬似コード/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 に答える