J'essaye de redimensionner une image avant qu'elle ne soit enregistrée. J'utilise une méthode de sauvegarde personnalisée sur le modèle, mais j'ai rencontré un problème.méthode de sauvegarde du modèle. Redimensionner l'image avant d'enregistrer
C'est le code que j'ai maintenant:
class UserImages(models.Model):
height = models.CharField(blank=True, max_length=100)
width = models.CharField(blank=True, max_length=100)
image = models.ImageField(upload_to="UserImages/%Y/%m/%d", height_field='height', width_field='width')
owner = models.ForeignKey(User)
def __unicode__(self):
return str(self.image)
def save(self, *args, **kwargs):
if self.image:
filename = str(self.image.path)
img = Image.open(filename)
if img.mode not in ('L', 'RGB'):
img = img.convert('RGB')
img = ImageOps.fit(img, (180,240), Image.ANTIALIAS, 0, (0.5, 0.5))
img.save(self.image.path)
super(UserImages, self).save(*args, **kwargs)
Cela ne me dit que le fichier ne peut être trouvé. Pour autant que je sache, cela a à voir avec le fait que l'image n'existe que dans la mémoire et ne peut donc pas être ouverte comme ça. Donc, ma question est: Comment puis-je ouvrir l'image de la mémoire et l'enregistrer en mémoire afin que la méthode de sauvegarde par défaut peut faire son truc avec elle?
Un grand merci pour toute aide, cela me conduit le mur :)
Un grand merci. Je pensais à épargner d'abord, mais je l'ai encore oublié. Aucune idée pourquoi. Et merci pour le headsup sur le nom. Je continue à nommer tous mes modèles au pluriel, celui-ci doit avoir glissé à travers le dernier contrôle :) –