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/