Ich habe ein Bildbearbeitungsprogramm, das ähnlich wie Photoshop ist, aber sehr einfach (Tasten und Bildanzeige). In meinem Programm können Sie das Bild auswählen, das Sie verwenden und ändern möchten. Ich bin derzeit auf einem Popart Teil des Programms zu arbeiten, aber wenn ich ein Bild von CheGevara (genannt „chev.png“) verwenden, es wird folgenden Fehler gibt (die Funktion ist „def PopArt()“):Python PIL int Objekt nicht untergruppierbar
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\EduPython\App\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "C:\Users\omar\Desktop\azer\Test 1.py", line 52, in PopArt
o=int((p[0]+p[1]+p[2])/3)
TypeError: 'int' object is not subscriptable
Wenn ich andere Bilder wie „fleur1.png“ verwenden oder „face.png“, es funktioniert gut und zeigt die Änderung nur in Ordnung. Hier ist der Code:
from tkinter import*
import tkinter as Tkinter
from tkinter import filedialog, DISABLED
import os
import ntpath
from PIL import Image
def EchelleDeGris():
Ima2=Image.new("RGB",(z[0],z[1]))
px=Ima1.load()
px1=Ima2.load()
for x in range(z[0]):
for y in range(z[1]):
p=px[x,y]
o=int((p[0]+p[1]+p[2])/3)
px1[x,y]=(o,o,o)
Ima2.save("ImageMod.png")
im2 = PhotoImage(file="ImageMod.png")
main.image = im2
I2 = Tkinter.Label(main, image=im2)
I2.grid(row=0, column=3, rowspan =6)
def SupprimerImage():
I2 = Tkinter.Label(main, image=imt)
I2.grid(row=0, column=3, rowspan =6)
def Luminosite():
Ima2=Image.new("RGB",(z[0],z[1]))
px=Ima1.load()
px1=Ima2.load()
for x in range(z[0]):
for y in range(z[1]):
p=px[x,y]
px1[x,y]=(p[0]+S1.get(),p[1]+S1.get(),p[2]+S1.get())
Ima2.save("ImageMod.png")
im2 = PhotoImage(file="ImageMod.png")
main.image = im2
I2 = Tkinter.Label(main, image=im2)
I2.grid(row=0, column=3, rowspan =6)
def AnnulerModifications():
I2 = Tkinter.Label(main, image=im1)
I2.grid(row=0, column=3, rowspan =6)
def PopArt():
Ima2=Image.new("RGB",(z[0],z[1]))
px=Ima1.load()
px1=Ima2.load()
for x in range(z[0]):
for y in range(z[1]):
p=px[x,y]
o=int((p[0]+p[1]+p[2])/3)
if o<85:
px1[x,y]=(0,0,255)
elif 85<o<170:
px1[x,y]=(0,255,0)
elif o>170:
px1[x,y]=(255,0,0)
Ima2.save("ImageMod.png")
im2 = PhotoImage(file="ImageMod.png")
main.image = im2
I2 = Tkinter.Label(main, image=im2)
I2.grid(row=0, column=3, rowspan =6)
main=Tk()
main.withdraw()
currdir = os.getcwd()
a = filedialog.askopenfilename()
main.deiconify()
main.configure(background="#a1dbcd")
main.title("Photoshop Version.Megzari")
Ima1=Image.open(a)
z=Ima1.size
nux=Image.new("RGB",(z[0],z[1]))
nuxy=nux.load()
for x in range(z[0]):
for y in range(z[1]):
nuxy[x,y]=(255,255,255)
nux.save("Blank.png")
if z>(400,400):
im2 = Tkinter.PhotoImage(file="ImageBlank.png")
main.image = im2
I2 = Tkinter.Label(main, image=im2)
I2.grid(padx=20, pady=20, row=0, column=1, rowspan =6)
T1 = Tkinter.Label(main, image=im2)
T1.grid(padx=20, pady=20, row=0, column=3, rowspan =6)
B1 = Tkinter.Button(main, text ="Echelle de gris", command = EchelleDeGris, fg="#a1dbcd", bg="#383a39", state=DISABLED)
B1.grid(padx=20, pady=20, row=0, column=2)
B3 = Tkinter.Button(main, text ="Appliquer Luminosité", command = Luminosite, fg="#a1dbcd", bg="#383a39", state=DISABLED)
B3.grid(padx=20, pady=20, row=2, column=2)
S1 = Scale(main, from_=0, to=254, orient=HORIZONTAL, fg="#a1dbcd", bg="#383a39", state=DISABLED, length = 200)
S1.grid(row=1, column=2)
B2 = Tkinter.Button(main, text ="Supprimer Image", command = SupprimerImage, fg="#a1dbcd", bg="#383a39", state=DISABLED)
B2.grid(padx=20, pady=20, row=4, column=2)
B3 = Tkinter.Button(main, text ="Annuler Modifications", command = AnnulerModifications, fg="#a1dbcd", bg="#383a39", state=DISABLED)
B3.grid(padx=20, pady=20, row=3, column=2)
B4 = Tkinter.Button(main, text ="Pop Art", command = PopArt, fg="#a1dbcd", bg="#383a39", state=DISABLED)
B4.grid(padx=20, pady=20, row=5, column=2)
elif z<(400,400):
im1 = Tkinter.PhotoImage(file=a)
I1 = Tkinter.Label(main, image=im1)
I1.grid(padx=20, pady=20, row=0, column=1, rowspan =6)
imt = Tkinter.PhotoImage(file="Blank.png")
T1 = Tkinter.Label(main, image=imt)
T1.grid(padx=20, pady=20, row=0, column=3, rowspan =6)
B1 = Tkinter.Button(main, text ="Echelle de gris", command = EchelleDeGris, fg="#a1dbcd", bg="#383a39", state=NORMAL)
B1.grid(padx=20, pady=20, row=0, column=2)
B3 = Tkinter.Button(main, text ="Appliquer Luminosité", command = Luminosite, fg="#a1dbcd", bg="#383a39")
B3.grid(padx=20, pady=20, row=2, column=2)
S1 = Scale(main, from_=0, to=254, orient=HORIZONTAL, fg="#a1dbcd", bg="#383a39", length = 200)
S1.grid(row=1, column=2)
B2 = Tkinter.Button(main, text ="Supprimer Image", command = SupprimerImage, fg="#a1dbcd", bg="#383a39")
B2.grid(padx=20, pady=20, row=4, column=2)
B3 = Tkinter.Button(main, text ="Annuler Modifications", command = AnnulerModifications, fg="#a1dbcd", bg="#383a39")
B3.grid(padx=20, pady=20, row=3, column=2)
B4 = Tkinter.Button(main, text ="Pop Art", command = PopArt, fg="#a1dbcd", bg="#383a39")
B4.grid(padx=20, pady=20, row=5, column=2)
s=S1.get()
main.mainloop()
Hier sind die Bilder, die ich verwendet (alle von ihnen sind png, aber chev.png und fleur.png wurden aus jpg umgewandelt und fleur1.png wurde von fleur.png Größe angepasst):
EDIT: die anderen Bilder in den Kommentaren sind, weil ich nicht mehr als 1 Link in meinem Beitrag
ich kann nicht mehr als 1 Link posten (weniger als 10 Ruf) so dass ich sie in den Kommentaren setzen: [face.png] [2]; [2]: https://i.stack.imgur.com/bz9Gd.png –
[fleur1.png] [3]; [3]: https://i.stack.imgur.com/JtgH4.png –
[fleur.png] [4]; [4]: https://i.stack.imgur.com/ZqPYr.png –