如何使用python将图片分割为等距正方形?

如何使用python将图片分割为等距正方形?,python,python-imaging-library,Python,Python Imaging Library,我正在尝试使用PIL并定义我自己的函数,该函数将图像和正方形大小(宽度或高度)作为参数,然后将图像分割成一系列较小的正方形。我不明白皮尔的裁剪方法。它接受(顶部、左侧、右侧、底部)。左上角、右上角等系统似乎更有用 在这里,我被卡住了,写的代码可以找到这些坐标应该是什么,从原点开始,给定一个正方形大小。有什么想法吗 以下是不起作用的 def parse_图像(源,正方形大小): src=Image.open(源代码) 尺寸=src.size 最大向上=int(src.高度/方形尺寸) 最大右=in

我正在尝试使用PIL并定义我自己的函数,该函数将图像和正方形大小(宽度或高度)作为参数,然后将图像分割成一系列较小的正方形。我不明白皮尔的裁剪方法。它接受(顶部、左侧、右侧、底部)。左上角、右上角等系统似乎更有用

在这里,我被卡住了,写的代码可以找到这些坐标应该是什么,从原点开始,给定一个正方形大小。有什么想法吗

以下是不起作用的

def parse_图像(源,正方形大小):
src=Image.open(源代码)
尺寸=src.size
最大向上=int(src.高度/方形尺寸)
最大右=int(src.宽度/方形尺寸)
tl=0
tr=方形尺寸
bl=方形尺寸*src.width+1
br=bl+方形尺寸
试验=钢骨作物(tl、tr、bl、br))
test.save('test.jpg')
test.show()

假设
square\u size
是一个定义每边长度的整数,因此我们需要多个图像。 下面的代码未经测试,但应该可以解决您的问题

def parse_image(source, square_size): 
    src = Image.open(source)
    width, height = src.size
    image_results = []
    for x in range(0, width, square_size): #
        for y in range(0, height, square_size):
            top_left = (x, y) #left top of the rect
            bottom_right = (x+square_size, y+square_size) #right bottom of the rect
            #the current format is used, because it's the cheapest
            #way to explain a rectange, lookup Rects
            test = src.crop((top_left[1], top_left[0], bottom_right[0], bottom_right[1]))
            image_results.append(test)

    return image_results
如果有任何问题,请告诉我

编辑时,我受到一个候选答案的启发,这个解决方案奏效了

def parse_image(源、正方形、打印坐标=False):
src=Image.open(源代码)
尺寸=src.size
打印(f“图像尺寸:{src.size}”)
最大向下=int(src.高度/正方形大小)*正方形大小+正方形大小
最大右=int(src.宽度/正方形大小)*正方形大小+正方形大小
tl_x=0
tl_y=0
br_x=方形尺寸
br_y=方形尺寸
计数=0
对于范围内的y(方形大小、最大向下、方形大小):
对于范围内的x(方形大小、最大右侧、方形大小):
计数+=1
样本=src.crop((tl_x,tl_y,br_x,br_y))
save(f“{source[:-4]}{sample{count}{ux{tl\ux}}{tl\uy}.jpg”)
如果print_coords==True:
打印(f“图像{count}:左上(x,y):{(tl_x,tl_y)},右下(x,y):{(br_x,br_y)}”)
tl_x=x
br_x=x+方形尺寸
tl_x=0
br_x=方形尺寸
tl_y=y
br_y=y+方形尺寸