Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Generar miniaturas de imágenes con django-thumbs

Tras ver que la mayoría de los proyectos existentes para generar miniaturas de imágenes aún no funcionan con la API de Storage y que algunos resultan algo complejos para lo que yo quería me puse a desarrollar un campo que lo hiciera del modo más sencillo posible.

La idea original era generar un campo que:

  • Generara thumbnails de una manera sencilla y automática para los campos de imagen que quisiera con todos los tamaños que quisiera
  • Funcionara exactamente igual que ImageField e incluyera automáticamente nuevos métodos para acceder a las URLs de las miniaturas
  • Permitiera volver a ImageField en cualquier momento sin modificar prácticamente nada más que el tipo de campo
  • Funcionara con cualquier Storage Backend
  • Generara las miniaturas al subir una nueva imagen sin tener que acceder al Storage Backend y por lo tanto sin tener que volver a traer la imagen desde donde estuviera mi almacenamiento para generarlas (útil si usas almacenamiento fuera de tu servidor, como Amazon S3)
  • Eliminara automáticamente las miniaturas al eliminar la imagen

Y lo que surgió fue django-thumbs. En la página del proyecto tenéis toda la información necesaria para ponerlo a funcionar. Si buscáis algo más complejo y con más opciones tenéis sorl-thumbnail, aunque aún no soporta backends de almacenamiento.

Publicado por Antonio Melé el Tuesday 23 de December de 2008 | Categorías: imágenes, modelos, snippets

Entradas similares

Crear una imagen de nuestros modelos con django-command-extensions

Algo interesante que nos aporta django-command-extensions es poder crear una representación gráfica de nuestros modelos (o por decirlo de otro modo nuestro esquema de base de datos) con tan sólo un comando. Esto es posible gracias a GraphViz y el ...


Métodos para crear perfiles de usuario

En múltiples ocasiones nos gustaría extender el modelo User para que incluyera otros campos y funciones. La manera "oficial" de hacer esto (la mostrada en la documentación de Django) es creando un modelo para el perfil de usuario que incluya ...


Middleware para detectar visitas desde buscadores

Saber si nuestro visitante viene de un buscador es interesante en varios casos. Por ejemplo para almacenar el término de búsqueda que le ha llevado a nuestro sitio web o desde qué buscador ha llegado para nutrir nuestras estadísticas. También ...


Templatetags globales en nuestros proyectos Django

Los templatetags de Django son a nivel de aplicación. Sin embargo a veces nos gustaría que distintas aplicaciones compartieran templatetags ó evitarnos tener que cargarlos en todas las plantillas mediante {% load ... %}.

Este sencillo snippet muestra cómo registrar templatetags de modo ...


Subdominios con Django

En ocasiones nos interesa trabajar con subdominios en nuestros proyectos Django. Para ello podemos utilizar un sencillo middleware para subdominios que podemos encontrar en djangosnippets. Basta con guardarlo en nuestro proyecto e incluirlo en la lista MIDDLEWARE_CLASSES de nuestro settings ...


Nuevo sitio web para django-thumbs

django-thumbs ya tiene nuevo sitio web: http://djangothumbnails.com. La versión 0.3 de django-thumbs funciona correctamente con la versión de desarrollo de Django actual y soluciona algunos problemas de las versiones anteriores. django-thumbs permite crear miniaturas de imágenes para ...


3 comentarios:

El Tuesday 23 de December de 2008 Pete dijo:

Gracias por esto code. No se creer que no estaba hecho ante de ahora.

Por favor, pusieras un roadmap por desarollo en la wiki?

El Wednesday 24 de December de 2008 Antonio Melé dijo:

Pete, en cuanto haya más ideas para añadir a django-thumbs y haya prevista una nueva versión pondré un roadmap en la página.

El Thursday 11 de February de 2010 Christian dijo:
I tried to use the thumbs.py, but I cant to make it work. I had put in the form:
form = ImagemNewsForm(request.FILES) (Pdb) n > /home/lzt/sistema_s/lztwww/admin/views.py(34)news_img_insert() -> if form.is_valid(): (Pdb) n > /home/lzt/sistema_s/lztwww/admin/views.py(36)news_img_insert() -> msg = 'Inserido com sucesso.' (Pdb) p form.errors {'imagem': [u'Este campo \xe9 obrigat\xf3rio.']} (Pdb) Can you help me? Tank you.

Escribe un comentario: