Según veo, el nombre de tu imagen es un material con el que inicias, por lo tanto ya lo conoces. O probablemente obtienes las imágenes de un directorio, donde de nuevo ya conoces los nombres. Revisa tal vez el módulo os, tal vez te ayude listdir() o bien busca glob en la documentación, para seleccionar familias de archivos y obtener sus nombres.

En el caso del reemplazo, es muy simple: una vez que tienes el nombre, éste es una cadena (string), por lo tanto tiene el método replace(). Con éste puedes obtener una versión modificada del nombre, con todas las correcciones que quieras.

Finalmente, para generar una clave al azar, revisa el módulo random, especialmente la función choice().

Saludos
Gerardo

Hubermann wrote:
Muchas gracias por las respuestas.

bueno estuve mirando algo del codigo y googleando y me empece a hacer una 
funcion para lo que quiero.

me quedan un par de cosas que no logro hacer funcionar:

quisiera poder sacar el nombre de la imagen que estoy usando pero no me permite 
sacar solo el nombre (nose q funcion se usa)

quiero editar el nombre para reemplazar espacios por guion medio

mi foto de un auto .jpg   x   mi-foto-de-un-auto.jpg

tambien quiero ver de q forma generar un random de unos 6 digitos para agregar 
al nombre apra evitar duplicados, con base64 vi que generar todo un random 
enorme de digitos pero no lo veo optimo para SEO


#thumbnail  (ad42643 seria el random)
mi-foto-de-un-auto_ad42643_thumb_200.jpg
#foto orig
 mi-foto-de-un-auto_ad42643_700.jpg

Saludos y gracias!

######

from PIL import Image
import random
"""
Author: Gabriel Hubermann
Web: www.hubermann.com
GTalk:huberm...@gmail.com
Description: resize image, create thumb in square or proportional, grayscale or 
color mode
"""

def thumb_create(image, thumb_size,format,path,color):
        image = Image.open(image)
        if image.format.upper() == 'JPEG':
                ext = 'jpg'
        if image.format.upper() == 'PNG':
                ext = 'png'
        if image.format.upper() == 'GIF':
                ext = 'gif'
        final_name = "miimagen_thumb."+str(thumb_size)+"."+ext
        
        
        #si requiere qeu sea B&N o color -  parametro color en : true/false
        if color==False:
                if image.mode != "L":
                   image = image.convert('L')
        
        #si es cuadrado
        if format == 'square':
                xsize, ysize = image.size
                minsize = min(xsize,ysize)
                xnewsize = (xsize-minsize)/2
                ynewsize = (ysize-minsize)/2
                area = image.crop((xnewsize, ynewsize, xsize-xnewsize, 
ysize-ynewsize))
                resolution =thumb_size, thumb_size
                finalthumb = area.resize(resolution , Image.ANTIALIAS)
                final_name = path+final_name
                finalthumb.save(final_name,quality = 100)
        
        #si es proporcional
        if format == 'normal':
                new_width = thumb_size
                new_height = new_width * image. size[1] / image. size[0]
                resolution =new_width, new_height
                finalthumb = image.resize(resolution , Image.ANTIALIAS)
                final_name = path+final_name
                finalthumb.save(final_name,quality = 100)
                

#imagen q tengo en la misma carpeta del script
imagen ="card.png"
#hice una carpeta llamada imagenes donde estoy guardando los thumb generados
path = "imagenes/"
# llamo a la funcion y le paso [archivo] [medidas] [cuadrado o proporcional] 
[carpeta a guardar] [True o False para color o B&N]
thumb_create(imagen, 200, 'square', path, color=True)

        
        






#######
On Sep 2, 2011, at 1:23 PM, Guillermo Moguel wrote:

Hola Hubermann, efectivamente, para poder saber donde se encuentra tu
imagen necesitaras consultarlo de tu modelo, en mi caso realizo una
operación como la que tu requieres, el cambio es que yo no modifico la
imagen original y únicamente modifico la imagen que me están
consultando y regreso la nueva imagen. Esto me ha funcionado
correctamente por que el flujo de la aplicación no en tan grande así
que me va bien.

Otro dato es que como la imagen no es accesible desde url (esto fue
pensado así), las fotos en este caso son tratadas y regresadas para
incrustar en un img de mi template.
<img src="data:image/jpg;base64,{{ photo }}" alt="Base64 encoded image" />


Y con poco de miedo de faltar a la culturilla pythónica.

def foto64(fichero, mini=False):
   try :
     import base64
     archivo = StringIO()
     imagen = Image.open(fichero, "r") #el fichero seria la ruta de
tu consulta del modelo
     x,y = imagen.size
     rel = round(Decimal(x)/Decimal(y), 2)

     if rel >= 1.33:
       recorte = [((x/2)-(y*5/12)),0,((x/2)+(y*5/12)),y]
       imagen = imagen.crop(recorte)

    if mini: #Esto lo uso para aun auto completado en un texbox, que
regresa la foto con nombres
       imagen.thumbnail((30, 34), Image.ANTIALIAS)
    else:
       imagen.thumbnail((294, 391), Image.ANTIALIAS)

   imagen.save(archivo, 'JPEG')
   return base64.b64encode(archivo.getvalue())

except:
   imagen = "" #aqui tendrias una cadena de alguna imagen que quieras
regresar si tienes un error
   return imagen

Saludos

El día 1 de septiembre de 2011 12:04, Hubermann <huberm...@gmail.com> escribió:
Hola guillermo, gracias por la respuesta, ahora el tema es que soy sumamente 
novato en esto de django
(programo en php)

como deberia hacer para saber cual es la imagen subida y darle las opciones de 
crop para el thumbnail, resize y luego eliminar la original?  eso tengo q 
hacerlo en el modelo?

puedo hacer una funcion aparte y pasarle los parametros que quiero?

por ejemplo:

from mi_funcion_para_imagenes import crop_imagen, resize_imagen


ultima = mi-imagen-recien-subida
ultima.crop_imagen(150px, cuadrado) //opciones de cuadrado o normal para cortar 
proporcionalmente
ultima.resize_imagen(700px) //llevar la imagen a un ancho maximo de 700px y 
luego eliminar la original


Gracias por responder, saludos desde Baires



On Sep 1, 2011, at 12:06 AM, Guillermo Moguel wrote:

Puedes usar la librería de PIL con eso haces eso, yo la uso también
con django y tengo esto para recortar la parte central mas o menos en
una proporción de foto infantil

from PIL import Image

foto = Image.open(fichero)
x = foto.size[0]
y = foto.size[1]
rel = round(Decimal(x)/Decimal(y), 2)

if rel >= 1.33:
   recorte = [((x/2)-(y*5/12)),0,((x/2)+(y*5/12)),y
   foto = foto.crop(recorte)

return  foto



Espero te sirva.
Saludos de Chiapas.

El día 31 de agosto de 2011 21:21, Hubermann <huberm...@gmail.com> escribió:
Hola

quisiera saber que se usa en python para la tarea hacer crop y generar un 
thumbnail en Django.

encontre un plugin thumbs.py pero solo hace thumbnail y lo hace cuadrado. 
(quisiera darle un ancho y el alto q sea proporcional)

tambien encontre photologue pero me parece demasido grande para lo que necesito 
hacer y poca info de como utilizarlo

Salu2
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


--
Guillermo Moguel Mandujano
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


--
Guillermo Moguel Mandujano
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a