Sono nuovo di Django (e Python) e ho cercato di elaborare alcune cose da solo, prima di utilizzare le app di altre persone. Ho difficoltà a capire dove le cose 'si adattano' al modo di fare Django (o Python). Quello che sto cercando di capire è come ridimensionare un'immagine, una volta che è stata caricata. Io ho la mia messa a punto del modello piacevolmente e collegato a l'amministratore, e l'immagine uploads multa alla directory:Ridimensionamento delle immagini con django?
from django.db import models
# This is to list all the countries
# For starters though, this will be just United Kingdom (GB)
class Country(models.Model):
name = models.CharField(max_length=120, help_text="Full name of country")
code = models.CharField(max_length=2, help_text="This is the ISO 3166 2-letter country code (see: http://www.theodora.com/country_digraphs.html)")
flag = models.ImageField(upload_to="images/uploaded/country/", max_length=150, help_text="The flag image of the country.", blank=True)
class Meta:
verbose_name_plural = "Countries"
def __unicode__(self):
return self.name
La cosa ora sto avendo problemi con sta prendendo quel file e fare un nuovo file in una miniatura. Come ho detto, mi piacerebbe sapere come farlo senza usare le app degli altri (per ora). Io ho questo codice da DjangoSnippets:
from PIL import Image
import os.path
import StringIO
def thumbnail(filename, size=(50, 50), output_filename=None):
image = Image.open(filename)
if image.mode not in ('L', 'RGB'):
image = image.convert('RGB')
image = image.resize(size, Image.ANTIALIAS)
# get the thumbnail data in memory.
if not output_filename:
output_filename = get_default_thumbnail_filename(filename)
image.save(output_filename, image.format)
return output_filename
def thumbnail_string(buf, size=(50, 50)):
f = StringIO.StringIO(buf)
image = Image.open(f)
if image.mode not in ('L', 'RGB'):
image = image.convert('RGB')
image = image.resize(size, Image.ANTIALIAS)
o = StringIO.StringIO()
image.save(o, "JPEG")
return o.getvalue()
def get_default_thumbnail_filename(filename):
path, ext = os.path.splitext(filename)
return path + '.thumb.jpg'
... ma questo mi ha in ultima analisi, confuso ... Come io non so come questo 'si adatta' al mio Django app? E davvero, è la soluzione migliore per fare semplicemente una miniatura di un'immagine che è stata caricata con successo? Qualcuno può mostrarmi un modo buono, solido e decente che un principiante come me possa imparare a farlo correttamente? Come in, sapendo dove mettere quel tipo di codice (models.py? Forms.py? ...) e come funzionerebbe nel contesto? ... Ho solo bisogno di un po 'di aiuto per capire e risolvere questo problema.
Grazie!
Grazie leafnode, ho ne ho sentito parlare e lo guarderò. Ma speravo di provare a capire i modi sottostanti di fare le cose per prima cosa, spero di farmi capire meglio come funziona ... Forse non vale la pena farlo? ... ma stavo pensando che ne valesse la pena farlo per diventare uno sviluppatore Python/Django migliore? – littlejim84
Se ti piace entrare nei dettagli, guarda l'altra risposta, ma ricorda che è per i moduli sul lato utente. – leafnode
è deaaaaaaaaaaaaad – titus