Google App Engine ofrece un API para manipulación de imágenes. Tiene funciones para:
El problema es que a la función de escalado hay que darle unas dimensiones fijas. No hay forma de que escale la imagen guardando la proporción de forma automática. Y curiosamente no hay tampoco ninguna función para obtener las dimensiones de la imagen. En caso de haberla podríamos calcular la proporción entre la anchura y la altura y así calcular unas dimensiones nuevas manteniendo la proporcionalidad.
Encontré en un hilo del grupo de discusión de Google App Engine un usuario que tenía una función 100% python para obtener la meta-información de una imagen.
El fichero img.py (licenciado como GPL) contiene al final la función que necesitamos: getImageInfo. Con esa función he creado la siguiente:
def resize(image, maxwidth, maxheight):
imageinfo = getImageInfo(image)
width = float(imageinfo[1])
height = float(imageinfo[2])
ratio = width / height
dwidth = maxheight * ratio
dheight = maxheight
if dwidth > maxwidth:
dwidth = maxwidth
dheight = maxwidth / ratio
return images.resize(image, int(dwidth), int(dheight))Esta función tiene 3 argumentos: la imagen, la anchura máxima de la imagen, y la altura máxima. El resultado es una imagen escalada proporcionalmente que tiene como máximo las dimensiones que se pasaron a la función.
Gimenete es un tipo al que le encanta programar. Lleva media vida programando en Java, y ahora le da bastante también a Python. No le hace ascos a JavaScript. Su tema de investigación favorito ahora es el cloud computing.
© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |