debug_mode=ON

Buscar en

 
 

Escalar imágenes sin deformarlas en App Engine

Escrito por gimenete hace 1 años bajo una licencia de Creative Commons Creative Commons License
1434 visitas. Etiquetas: python, gae, app-engine

Google App Engine ofrece un API para manipulación de imágenes. Tiene funciones para:

  • Escalar una imagen (resize)
  • Rotar una imagen (rotate)
  • Recortar una imagen (crop)
  • Reflejar (flip)
  • Ajustar los niveles de contraste y color (im feeling lucky)

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.

 

¡Votalo! 4 votos
¡Compártelo!

        

&nbps;

&nbps;

gimenete

Sobre gimenete

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.

 
Regístrate o haz login para participar.
¿Todavía no conoces debugmodeon?
debugmodeon es la red social para profesionales de la informática
descubre debugmodeon
 

 

© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |