Bonjour,
J'ai un petit soucis avec Django, je n'arrive pas à générer des miniatures. Voici ma classe :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | from django.db import models from django.core.files.base import ContentFile class Picture(models.Model): IMAGE_SIZES = { 'thumbnail' : (360, 225) } title = models.CharField(max_length=64, verbose_name='titre') description = models.TextField(null=True, verbose_name='description') date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="date d'upload") picture = models.ImageField(upload_to='images/', verbose_name='image') class Meta: verbose_name = "Image" verbose_name_plural = "Images" def __str__(self): return self.title def save(self): from PIL import Image #Original photo imgFile = Image.open(self.picture.path) #Convert to RGB if imgFile.mode not in ('L', 'RGB'): imgFile = imgFile.convert('RGB') #Save a thumbnail for each of the given dimensions #The IMAGE_SIZES looks like: #IMAGE_SIZES = { 'image_web' : (300, 348), # 'image_large' : (600, 450), # 'image_thumb' : (200, 200) } #each of which corresponds to an ImageField of the same name for field_name, size in self.IMAGE_SIZES.iteritems(): field = getattr(self, field_name) working = imgFile.copy() working.thumbnail(size, Image.ANTIALIAS) fp = StringIO() working.save(fp, "JPEG", quality=95) cf = ContentFile(fp.getvalue()) field.save(name=self.picture.name, content=cf, save=False); #Save instance of Photo super(Photo, self).save() |
La méthode save()
est un snippet que j'ai pris ici.
Et voici l'erreur que j'obtiens (je vous passe tout le pâté d'avant) :
1 | FileNotFoundError: [Errno 2] No such file or directory: '/home/louis/Documents/blog/lens/media/plane.png' |
Donc en faite le fonction save s'exécute avant que l'image soit déplacé dans le dossier media/images/
et je peux vous confirmer que ce dossier est vide…
Comment faire ?
Merci de votre aide !
+0
-0