Foros del Web » Programando para Internet » Python »

Form para crear miniaturas o thumbnails en un directorio paralelo

Estas en el tema de Form para crear miniaturas o thumbnails en un directorio paralelo en el foro de Python en Foros del Web. Hola a todos! Primero que nada, no soy un experto en Python ni nada por el estilo -así que espero hacerme entender- pero tengo un ...
  #1 (permalink)  
Antiguo 31/08/2011, 16:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 22
Antigüedad: 13 años, 6 meses
Puntos: 1
Form para crear miniaturas o thumbnails en un directorio paralelo

Hola a todos!

Primero que nada, no soy un experto en Python ni nada por el estilo -así que espero hacerme entender- pero tengo un sitio sobre Django, y necesito generar una función en uno de los formulario para generar la acción que paso a detallar:

En uno de los formularios que tenemos, creamos fichas con imágenes en tamaño ampliación, las cuales guarda en la base regularmente. Lo que necesito es que cuando se sube la imagen, además de guardarla en un directorio determinado, cree una miniatura paralela y la guarde en una carpeta determinada, para utilizar el thumbnail en los diversos listados y no tener que meterle css y java a las ampliación para ser achicadas, puesto que genera demoras innecesarias.

Alguien tiene algún código ya determinado para generar dicha función aplicando variables de ancho, alto y peso?? Les copio el código del upload de imgs en el objeto fichas.

Código Python:
Ver original
  1. class FichaForm(forms.ModelForm):
  2.  
  3.     def _clean_imagen_field(self, attrname, check_max=True, check_min=False):
  4.         imagen = self.cleaned_data[attrname]
  5.         if imagen is None:
  6.             return None
  7.                
  8.         if imagen.size > 2097152:
  9.             raise forms.ValidationError(u"La imagen debe ser menor de 2MB.")        
  10.  
  11.         img = Image.open(StringIO(imagen.read()))
  12.         img.load()
  13.        
  14.         x, y = img.size
  15.  
  16.         if check_min and (x < 100 or y < 100):
  17.             raise forms.ValidationError((u"La imagen es de %d x %d."
  18.                                          u" Tamañan mínimo 100 x 100") % (x, y))
  19.  
  20.         if check_max and (x > 2000 or y > 2000):
  21.             raise forms.ValidationError((u"La imagen es de %d x %d."
  22.                                          u" Tamañan máximo 2000 x 2000") % (x, y))
  23.  
  24.         return imagen      
  25.  
  26.     def clean_imagen(self):
  27.         attrname = 'imagen'
  28.         if not attrname in self.cleaned_data:
  29.             raise forms.ValidationError(u"La imagen es requerida")
  30.         return self._clean_imagen_field(attrname, check_min=True)
  31.  
  32.     def clean_imagen1(self):
  33.         attrname = 'imagen1'      
  34.         if not attrname in self.cleaned_data:
  35.             return None
  36.  
  37.         return self._clean_imagen_field(attrname)
  38.    
  39.     def clean_imagen2(self):
  40.         attrname = 'imagen2'
  41.         if not attrname in self.cleaned_data:
  42.             return None
  43.  
  44.         return self._clean_imagen_field(attrname)
  45.  
  46.     def clean_imagen3(self):
  47.         attrname = 'imagen3'
  48.         if not attrname in self.cleaned_data:
  49.             return None
  50.  
  51.         return self._clean_imagen_field(attrname)
  52.  
  53.     class Meta:
  54.         model = Ficha

Saludos.
  #2 (permalink)  
Antiguo 31/08/2011, 19:28
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Form para crear miniaturas o thumbnails en un directorio paralelo

Claro puedes utilizar el modulo Image para hacer thumbnails.

De hecho es el primer ejemplo de este modulo Image.
  #3 (permalink)  
Antiguo 01/09/2011, 06:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 22
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Form para crear miniaturas o thumbnails en un directorio paralelo

Gracias, razpeitia. Una consulta más, en este caso, sólo debo agregar el código que figura en el link que me pasaste?

Código Python:
Ver original
  1. from PIL import Image
  2. import glob, os
  3.  
  4. size = 128, 128
  5.  
  6. for infile in glob.glob("*.jpg"):
  7.     file, ext = os.path.splitext(infile)
  8.     im = Image.open(infile)
  9.     im.thumbnail(size, Image.ANTIALIAS)
  10.     im.save(file + ".thumbnail", "JPEG")

o es necesario descargar algún paquete o aplicación??

Saludos y gracias por tu respuesta.
  #4 (permalink)  
Antiguo 01/09/2011, 09:32
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Form para crear miniaturas o thumbnails en un directorio paralelo

Si necesitas instalarle el modulo Image en caso que no lo tengas.

Otra cosa, si leíste lo que hacia el código es convertir todas las images (.jpg) de una carpeta a thumbnails. Solo tienes que cambiar un poco el código para que haga lo que tu pides.
  #5 (permalink)  
Antiguo 01/09/2011, 09:36
 
Fecha de Ingreso: mayo-2011
Mensajes: 22
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Form para crear miniaturas o thumbnails en un directorio paralelo

Gracias nuevamente, razpeitia. Ahora me quedó un poco más claro, sólo será cuestión de comenzar a probar y hacerlo funcionar. Excelente aporte.

Gracias y saludos.

Etiquetas: django, miniatura, trim, thumbnails, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:02.