redimensionnement de l'image sur enregistrer
Comment puis-je facilement redimensionner une image après il a été transféré dans Django? Je suis à l'aide de Django 1.0.2 et j'ai installé PIL.
Je pensais à la substitution de la méthode save() du Modèle de la redimensionner, mais je ne sais pas vraiment comment commencer et de le remplacer.
Quelqu'un peut me pointer dans la bonne direction? Merci 🙂
@Guðmundur H:
Cela ne marchera pas, parce que django-stdimage paquet ne fonctionne pas sur Windows 🙁
OriginalL'auteur | 2009-03-08
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser une méthode pour gérer le fichier téléchargé, comme l'a démontré dans le Documentation de Django.
Dans cette méthode, vous pouvez concaténer les morceaux dans une variable (plutôt que de les écrire sur le disque directement), créer un PIL Image à partir de cette variable, redimensionner l'image et de l'enregistrer sur le disque.
Dans PIL, vous devriez regarder
Image.fromstring
etImage.resize
.OriginalL'auteur Can Berk Güder
Je recommande d'utiliser StdImageField de django-stdimage, il doit gérer tout le sale boulot pour vous. Il est facile à utiliser, il suffit juste de préciser les dimensions de l'image dans le champ de définition:
Découvrez les docs — il peut faire des vignettes également.
Windows ne peut pas récursif. C'est un linux seule caractéristique 🙂
fonctionne sur win32 pour moi.
Échoue sur osx 10.7, expire sans lancer une erreur, ou de donner véritablement les informations de débogage. Les autorisations sont certainement correctes / il travaillait avant avec le fichier normal champ.
ce cas ne pas redimensionner maintenir le ratio d'aspect
OriginalL'auteur Guðmundur H
J'utilise ce code pour gérer les images téléchargées, les redimensionner sur la mémoire(sans les enregistrer de façon permanente sur le disque), puis en enregistrant le pouce sur un Django ImageField.
L'espoir peut vous aider.
Vous la méthode fonctionne très bien. Merci pour le code! Je dirais, cependant, que vous changer le nom de la variable au-dessus de str à autre chose, parce que c'ombres python BIF fonction str(). Si quelqu'un modifie un peu le code que vous avez écrit et utilise le BIF ci-dessous la déclaration de la variable, il serait la cause d'une erreur (python dirais que str n'est pas appelable)
Mise à jour, merci!
Salut, j'ai une question : ici, vous télécharger l'image sur le répertoire tmp : imagefile = open(os.chemin d'accès.join(‘/tmp’,filename), ‘w’) et encore , ici ob.image.enregistrer(t[0],t[1]) ... donc ce qui arrive ensuite avec l'image sur le répertoire tmp ???
OriginalL'auteur Stefan Manastirliu
Je recommande fortement le sorl-miniature application pour le traitement de redimensionnement d'image facilement et de manière transparente. Il va dans chaque projet Django-je commencer.
Sorl a une nouvelle mantainer et est en train de préparer une nouvelle version bientôt, lui donner un look github.com/mariocesar/sorl-thumbnail
OriginalL'auteur Carl Meyer
Je sais que c'est vieux, mais pour quelqu'un d'achoppement, il est un package,
django-thumbs
à Django-pouces - puissante et Facile vignettes pour Django intégré avec StorageBackend, qui génère automatiquement des vignettes dans les tailles que vous spécifiez, ou none si vous ne le faites pas. Vous appelez ensuite la vignette que vous voulez avec les dimensions que vous souhaitez.Par exemple, si vous voulez une image pour avoir les vignettes de 64x64 et 128x128, il vous suffit d'importer
thumbs.models.ImageWithThumbsField
, et utiliser à la place deImageField
. Ajouter un paramètresizes=((64,64),(128,128))
à la définition d'un champ, puis à partir de votre modèle, vous pouvez appeler le:et
pour afficher les vignettes. Voila! Tout le travail est fait dans ce paquet pour vous.
from south.modelsinspector import add_introspection_rules add_introspection_rules([ ( [models.ImageField], # Class(es) these apply to [], # Positional arguments (not used) { # Keyword argument "sizes": ["sizes", {"default": None}], }, ), ], ["^django_thumbs\.db\.models\.ImageWithThumbsField"])
OriginalL'auteur Furbeenator
Ici est une solution complète pour toi, à l'aide d'un formulaire. J'ai utilisé admin vues pour cet:
Mon inventaire modèle ressemble à ceci:
....
J'ai fini d'écraser la fonction d'enregistrement du modèle au lieu de sauvegarder la photo et un pouce au lieu de simplement le redimensionnement de la photo:
Les deux fonctionne très bien en fonction de ce que vous voulez faire 🙂
OriginalL'auteur radtek