在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个或更多块。
答案 0 :(得分: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
答案 1 :(得分:-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;
}
}
}