Обработка изображения при его загрузке с сайта администратора

Я хочу загрузить несколько прозрачных фоновых png через админку сайта django. Но после загрузки я хочу обработать их, например, сделать фон черным.

У меня есть класс из models.py следующего вида:

class AllClass(models.Model):
    name = models.CharField(max_length=40, unique=True, help_text="Name of this class(e.g. Wardancer)")
    archetype = models.ForeignKey('Archetype', on_delete=models.RESTRICT, null=True)
    icon = models.ImageField(upload_to='icons',default='media/default/default_icon.jpg')

Функция, подобная этой, должна вызываться во время или после загрузки:

def recolor(url):
    image = Image.open(url).convert("RGBA")
    new_image = Image.new("RGBA", image.size, "BLACK")
    new_image.paste(image, mask=image)

    return new_image.convert("RGB")

Я попробовал этот подход, добавив его в свой файл models.py:

@receiver(post_save, sender=Image)
def crop_image(sender, instance, **kwargs):
    imgage = instance.image
    original = Image.open(imgage.src.path).convert("RGBA")
    new_image = Image.new("RGBA", original.size, "BLACK")
    new_image.paste(original, mask=original)
    instance.image = new_image

Не получилось, возможно, я сделал это не так, как надо.

В заключение, я хочу, чтобы изображение было обработано и, желательно, заменено обработанным изображением до того, как url был сохранен в базе данных

Вернуться на верх