Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: LuisAngel en 7 Septiembre 2017, 17:32 pm



Título: Problema con cargar una imagen- Python
Publicado por: LuisAngel en 7 Septiembre 2017, 17:32 pm
Hola, mi problema es luego de cargar la imagen y mostrarla en la interfaz ocurre que quiero modificarlo a operador identidad pero no se como enviar la imagen desde el metodo abre() hacia el metodo identidad() luego mostrarlo ya cambiado necesito hacer el mismo procedimiento para los otros operadores puntuales.
este es el avance que pude hacer
Código
  1. from tkinter import *
  2. from PIL import ImageTk, Image
  3. from tkinter import filedialog
  4. import  tkinter as tk
  5.  
  6. ancho = 200
  7. alto = 0
  8. ventana=Tk()
  9. ventana.geometry("700x600+100+100")
  10. ventana.title("Ejercicio 2")
  11. def abre():
  12.    pic=filedialog.askopenfilename()
  13.    img=Image.open(pic)
  14.    o_size=img.size
  15.    f_size=(200,200)
  16.    factor = min(float(f_size[1])/o_size[1], float(f_size[0])/o_size[0])
  17.    width = int(o_size[0] * factor)
  18.    height = int(o_size[1] * factor)
  19.    rImg= img.resize((width, height), Image.ANTIALIAS)
  20.    rImg = ImageTk.PhotoImage(rImg)
  21.    lblImage=Label(ventana,image=rImg).place(x=150,y=150)
  22.    ventana.mainloop()
  23.    return rImg
  24.  
  25. def identidad(img):
  26.    img=abre()
  27.    salida = Image.new("L",(ancho,alto))
  28.    for i in range(img.size[0]):
  29.        for j in range(img.size[1]):
  30.            p = img.getpixel((i,j))
  31.            q = p
  32.            salida.putpixel((i,j),q)
  33.    return salida
  34.  
  35.    imgGray = Image.open(filedialog.askopenfilename()).convert("L")
  36.    ancho,alto = imgGray.size
  37.    resultado = identidad(imgGray)
  38.    resultado.show()
  39.  
  40. ##label
  41. lbldes=Label(text="Crear en python un menu para seleccionar el tipo de operador puntual a mostrar.",font=("Agency FB",16)).place(x=10,y=45)
  42. lblimang=Label(text="Pulse para cargar imagen",font=("Agency FB",14)).place(x=25,y=80)
  43. #botones##
  44. btnImag=Button(ventana,text="cargar Imagen",command=abre,font=("Agency FB",14),width=15).place(x=200,y=80)
  45. btnImag=Button(ventana,text="Operador Identidad",command=identidad,font=("Agency FB",14),width=15).place(x=30,y=370)
  46.  
  47.  
  48.  


Título: Re: Problema con cargar una imagen- Python
Publicado por: tincopasan en 10 Septiembre 2017, 14:57 pm
la verdad que no entiendo la lógica de tu script y menos aún lo que estás planteando, así y todo le hice unas pequeñas modificaciones para que sea medianamente funcional y veas donde puede estar el problema.
Código
  1. from tkinter import *
  2. from PIL import ImageTk, Image
  3. from tkinter import filedialog
  4. import  tkinter as tk
  5.  
  6. ancho = 200
  7. alto = 200
  8. ventana=Tk()
  9. ventana.geometry("700x600+100+100")
  10. ventana.title("Ejercicio 2")
  11. def abre():
  12.    global img
  13.    pic=filedialog.askopenfilename()
  14.    img=Image.open(pic)
  15.    o_size=img.size
  16.    f_size=(200,200)
  17.    factor = min(float(f_size[1])/o_size[1], float(f_size[0])/o_size[0])
  18.    width = int(o_size[0] * factor)
  19.    height = int(o_size[1] * factor)
  20.    rImg= img.resize((width, height), Image.ANTIALIAS)
  21.    rImg = ImageTk.PhotoImage(rImg)
  22.    lblImage=Label(ventana,image=rImg).place(x=150,y=150)
  23.    ventana.mainloop()
  24.  
  25.  
  26.  
  27. def identidad():
  28.    imga=img
  29.    imga =imga.resize((150,150),Image.ANTIALIAS)
  30.    salida = Image.new("RGB",(ancho,alto))
  31.    for i in range(imga.size[0]):
  32.        for j in range(imga.size[1]):
  33.            p = imga.getpixel((i,j))
  34.            q = p
  35.            salida.putpixel((i,j),q)
  36.    salida.show()        
  37.    return salida
  38.  
  39. '''
  40. imgGray = Image.open(filedialog.askopenfilename()).convert("L")
  41. ancho,alto = imgGray.size
  42. resultado = identidad(imgGray)
  43. resultado.show()
  44. '''
  45. ##label
  46. lbldes=Label(text="Crear en python un menu para seleccionar el tipo de operador puntual a mostrar.",font=("Agency FB",16)).place(x=10,y=45)
  47. lblimang=Label(text="Pulse para cargar imagen",font=("Agency FB",14)).place(x=25,y=80)
  48.    #botones##
  49. btnImag=Button(ventana,text="cargar Imagen",command=abre,font=("Agency FB",14),width=15).place(x=200,y=80)
  50. btnImag=Button(ventana,text="Operador Identidad",command=identidad,font=("Agency FB",14),width=15).place(x=30,y=370)
  51. ventana.mainloop()
  52.  


Título: Re: Problema con cargar una imagen- Python
Publicado por: LuisAngel en 11 Septiembre 2017, 07:13 am
muchas gracias tincopasan, nadie me respondía en otros foros y si tienes razón no me explicado muy bien mi problema pero supiste entenderme.
lo pude terminar aun tengo que aprender, soy principiante en python.
mi fin era un botón que obtenga una imagen y esa imagen convertirla en los operadores puntuales.
gracuas  ;-)