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

Entradas sobre "imágenes":

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 resultado es algo parecido a un diseño UML. Para poder utilizar este comando debemos tener instalado pygraphviz y por supuesto la aplicación django_extensions debe estar incluída en el setting INSTALLED_APPS de nuestro proyecto.

Para instalar pygraphviz en Linux nos bastará con utilizar el comando:

apt-get install python-pygraphviz

Una vez hemos instalado django-command-extensions y pygraphviz podremos crear un archivo dot, formato utilizado por GraphViz ó una imagen. En nuestro caso vamos a crear un archivo PNG que incluya los modelos de todas las aplicaciones de nuestro proyecto. Para ello usamos el comando:

./manage.py graph_models -a -g -o mis_modelos.png

Con el parámetro -o especificamos el archivo de imagen en el que queremos que se almacene el resultado. Si sólo queremos incluir los modelos de algunas aplicaciones podemos hacerlo con el siguiente comando:

./manage.py graph_models app1 app2 app3 -o mis_modelos.png

Este ejemplo es de los modelos de la PyCon-Tech, un framework de gestión de conferencias basado en Django:

Representación gráfica de modelos con django-command-extensions y graphviz

Publicado por Antonio Melé el Domingo 12 d Julio d 2009 | 0 comentarios | Categorías: aplicaciones, imágenes, modelos, pluggables, trucos, tutorial

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 los campos ImageField de tus modelos.

Para usar django-thumbs en tus modelos importa ImageWithThumbsField y reemplaza los campos ImageField por campos ImageWithThumbsField. En cada campo de imagen podrás incluir un nuevo argumento sizes que defina los tamaños de imagen de las miniaturas que deseas. Por ejemplo:

from django.db import models
from thumbs import ImageWithThumbsField

class Persona(models.Model):
    foto = ImageWithThumbsField(upload_to='images', sizes=((125,125),(200,200)))
    otra_foto = ImageWithThumbsField(upload_to='images')

Al subir una imagen se crearán las miniaturas definidas mediante el atributo sizes y al eliminar el objeto se eliminarán las miniaturas asociadas. Por lo demás ImageWithThumbsField funciona igual que un ImageField normal y no introduce ningún cambio en las tablas de la base de datos de tu modelo. Siempre puedes volver a utilizar ImageField en lugar de ImageWithThumbsField cuando quieras.

Para obtener la url de las miniaturas en las plantillas basta con acceder al atributo url_tamaño. En nuestro caso sería imagen.url_125x125 e imagen.url_200x200.

Django thumbnails

Publicado por Antonio Melé el Domingo 22 d Marzo d 2009 | 3 comentarios | Categorías: aplicaciones, comunidad, imágenes

Instalar PIL en Mac OS X Leopard 10.5.6

Al instalar Django en Mac OS X, si utilizamos ImageField en nuestros modelos necesitaremos PIL (Python Imaging Library), la librería de tratamiento de imágenes para Python. Tras probar con distintos métodos que no han tenido éxito he encontrado un post que explica de una forma sencilla cómo hacerlo. Estos son los pasos a seguir:

  1. Descarga el instalador de PIL desde http://pythonmac.org/packages/py25-fat/index.html

  2. El instalador de PIL busca Python en una ruta distinta de donde está por defecto en Mac OS X Leopard. Para que al buscar en esa ruta encuentre la verdadera ruta donde se encuentra Python tenemos que crear un enlace simbólico:

    cd /Library/Frameworks
    sudo ln -s /System/Library/Frameworks/Python.framework/ Python.framework
    
  3. Abrimos el instalador que hemos descargado e instalamos PIL

  4. Tenemos que añadir PIL a nuestro path de Python. Editamos ~/.profile (en caso de no funcionar de esta manera editaríamos ~/.bashrc) y añadimos la siguiente línea:

    export PYTHONPATH=/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/
    
  5. Podemos comprobar que PIL está correctamente instalado escribiendo el siguiente comando en el Terminal y viendo que no da ningún error:

    python -c "from PIL import Image"
    

Publicado por Antonio Melé el Sábado 7 d Marzo d 2009 | 1 comentario | Categorías: imágenes, instalación, mac osx

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 Martes 23 d Diciembre d 2008 | 3 comentarios | Categorías: imágenes, modelos, snippets