Как обрезать изображение по форме полигона?

Мне очень нужна функция для получения обрезанной картинки по форме полигона , что-то вроде этого:

def slice(img, polygon):
    #Somthing...
    return sliced_img

Я уже находил что-то подобное на англ. Stackoverflow:

def slice_img(img, plg, window_size):
    masked_result = img.copy()
    mask_surface = pygame.Surface(window_size)
    pygame.draw.polygon(mask_surface, (255,255,255), plg)
    masked_result.blit(mask_surface, (0, 0), None, pygame.BLEND_RGBA_MULT)
    return masked_result

Но эта функция не подходит т.к.:

1.Она возвращает исходное изображение , только видно будет только ту часть которая подходит по форме полигона (т.е. если img это гигантское изображение, а поместить мне надо несколько таких изображений, то каждое изображение будет закрывать все, что уже нарисовано)

2.Она работает дёргано(изображение разрывает на куски)

Возможно это можно реализовать и не с помощью pygame, а других библиотек (вроде PIL), но я в них не разбираюсь


Ответы (0 шт):