Problema con cargar una imagen- Python

Iniciado por LuisAngel, 7 Septiembre 2017, 17:32 PM

0 Miembros y 1 Visitante están viendo este tema.

LuisAngel

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 (python) [Seleccionar]

from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
import  tkinter as tk

ancho = 200
alto = 0
ventana=Tk()
ventana.geometry("700x600+100+100")
ventana.title("Ejercicio 2")
def abre():
    pic=filedialog.askopenfilename()
    img=Image.open(pic)
    o_size=img.size
    f_size=(200,200)
    factor = min(float(f_size[1])/o_size[1], float(f_size[0])/o_size[0])
    width = int(o_size[0] * factor)
    height = int(o_size[1] * factor)
    rImg= img.resize((width, height), Image.ANTIALIAS)
    rImg = ImageTk.PhotoImage(rImg)
    lblImage=Label(ventana,image=rImg).place(x=150,y=150)
    ventana.mainloop()
    return rImg

def identidad(img):
    img=abre()
    salida = Image.new("L",(ancho,alto))
    for i in range(img.size[0]):
        for j in range(img.size[1]):
            p = img.getpixel((i,j))
            q = p
            salida.putpixel((i,j),q)
    return salida

    imgGray = Image.open(filedialog.askopenfilename()).convert("L")
    ancho,alto = imgGray.size
    resultado = identidad(imgGray)
    resultado.show()
       
##label
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)
lblimang=Label(text="Pulse para cargar imagen",font=("Agency FB",14)).place(x=25,y=80)
#botones##
btnImag=Button(ventana,text="cargar Imagen",command=abre,font=("Agency FB",14),width=15).place(x=200,y=80)
btnImag=Button(ventana,text="Operador Identidad",command=identidad,font=("Agency FB",14),width=15).place(x=30,y=370)



tincopasan

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 (python) [Seleccionar]

from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
import  tkinter as tk

ancho = 200
alto = 200
ventana=Tk()
ventana.geometry("700x600+100+100")
ventana.title("Ejercicio 2")
def abre():
    global img
    pic=filedialog.askopenfilename()
    img=Image.open(pic)
    o_size=img.size
    f_size=(200,200)
    factor = min(float(f_size[1])/o_size[1], float(f_size[0])/o_size[0])
    width = int(o_size[0] * factor)
    height = int(o_size[1] * factor)
    rImg= img.resize((width, height), Image.ANTIALIAS)
    rImg = ImageTk.PhotoImage(rImg)
    lblImage=Label(ventana,image=rImg).place(x=150,y=150)
    ventana.mainloop()
   
     

def identidad():
    imga=img
    imga =imga.resize((150,150),Image.ANTIALIAS)
    salida = Image.new("RGB",(ancho,alto))
    for i in range(imga.size[0]):
        for j in range(imga.size[1]):
            p = imga.getpixel((i,j))
            q = p
            salida.putpixel((i,j),q)
    salida.show()       
    return salida

'''
imgGray = Image.open(filedialog.askopenfilename()).convert("L")
ancho,alto = imgGray.size
resultado = identidad(imgGray)
resultado.show()
'''
##label
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)
lblimang=Label(text="Pulse para cargar imagen",font=("Agency FB",14)).place(x=25,y=80)
    #botones##
btnImag=Button(ventana,text="cargar Imagen",command=abre,font=("Agency FB",14),width=15).place(x=200,y=80)
btnImag=Button(ventana,text="Operador Identidad",command=identidad,font=("Agency FB",14),width=15).place(x=30,y=370)
ventana.mainloop()

LuisAngel

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  ;-)