[Python-es] Redimencionar imagen

tny a.porrua en gmail.com
Lun Dic 20 13:06:04 CET 2010


> comento:
> 
> estoy subiendo imágenes al servidor pero no las guardo como archivo,
> las almaceno directamente en la base de datos en campos BLOD.
> 
> tengo los script para cambiar el tamaño de la imagen y crear thumber.
> pero estos solo funcionan cuando el archivo esta almacenado en un
> directorio.
> no deseo crear archivos temporales y guardar la imagen como archivo,
> aplicar
> el proceso y luego
> cargarla a la base de datos.
> 
> deseo poder guardar y redimencionar directamente en la base de datos.
> 
> alguien sabe como?
> 
> creo que mi fallo radica en tener los script y en realidad no saber
> como funcionan :S
> de otra forma creo que ya hubiera dado con la solución :(

¿Usas PIL?

Tanto el método im.save como el Image.open aceptan objetos archivo,
entendiendo como tales cualquier objeto que implemente los métodos seek
tell y (read o write)

http://www.pythonware.com/library/pil/handbook/image.htm#Image.save
http://www.pythonware.com/library/pil/handbook/image.htm#open

Así podrías hacerlo sin modificar el código que se encarga de las
imágenes, simplemente pasandole en lugar de la ruta al archivo temporal,
un objeto que se encarge de hacer el write en la bd.

De todos modos posiblemente sea más sencillo que tu código de
redimensionar acepte y devuelva strings en vez de archivos, así que
mírate los siguientes métodos:
http://www.pythonware.com/library/pil/handbook/image.htm#Image.tostring
http://www.pythonware.com/library/pil/handbook/image.htm#Image.fromstring

Reference guide Rules the world!



Más información sobre la lista de distribución Python-es