构建一组tile坐标

时间:2016-08-11 18:32:55

标签: python list-comprehension

我有一张图像,我希望将其划分为特定尺寸的图块(以及不适合的裁剪图块)。

此操作的输出应该是元组[(x, y, width, height),...]中的坐标列表。例如,将大小为20的图块中的50x50图像分割为:[(0,0,20,20),(20,0,20,20),(40,0,10,20),(0,20,20,20),(20,20,20,20),(40,20,10,20),...]等。

鉴于heightwidthtile_size,似乎我应该能够在单个列表理解中执行此操作,但我无法理解它。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

得到它:

@search = Product.sorted_by_special_price_asc_msrp_asc.search(search_params)

答案 1 :(得分:0)

import itertools

def tiles(h, w, ts):
    # here is the one list comprehension for list of tuples
    return [tuple(list(ele) + [ts if w-ele[0] > 20 else w-ele[0], ts if h-ele[1] > 20 else h-ele[1]]) for ele in itertools.product(*[filter(lambda x: x % ts == 0, range(w)), filter(lambda x: x % ts == 0, range(h))])]

print tiles(50, 50, 20)

[(0,0,20,20),(0,20,20,20),(0,40,20,10),(20,0,20,20),(20,20,20) ,20),(20,40,20,1 0),(40,0,10,20),(40,20,10,20),(40,40,10,10)]