Обработка изображения при его загрузке с сайта администратора
Я хочу загрузить несколько прозрачных фоновых 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 был сохранен в базе данных