오늘 Tkinter 라이브러리를 사용하여 .gif 이미지의 색상을 뒤집을 Python 코드를 만들려고했습니다. 이 코드는 정상적으로 작동하지만 3.4ghz 프로세서에서 실행하는 데 약 50 초가 걸립니다. 이 문제를 최적화하기 위해 내가 무엇을 바꿀 수 있는지 보는 데 어려움을 겪고 있습니다. 기본적으로 이미지의 모든 픽셀을 반복하고 색상 값을 가져 와서 정수 목록으로 변환하고 (수학적으로 조작하기 위해) 각 색상 값을 반전하고 (새 색상 값 = 255 - 이전 색상 값) 변환합니다. PhotoImage의 "put"메서드가 이미지를 처리하고 이미지를 다시 쓰고 마지막으로 거꾸로 된 이미지를 표시 할 수 있도록 문자열로 되돌립니다. 나는 무엇을 변화 시킬지 생각할 수 없다. 즉, 모든 단일 픽셀을 반복하면서 느려지는 부분이되어야하지만,이 과정이 완전히 필요하지는 않습니까?색상 반전 최적화 - Python Tkinter 라이브러리
from Tkinter import *
import tkMessageBox
class GUIFramework(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid(padx=0, pady=0)
self.btnDisplay = Button(self, text="Display!", command=self.Display)
self.btnDisplay.grid(row=0, column=0)
def Display(self):
a = ''
b = []
self.imageDisplay = PhotoImage(file='C:\image.gif')
for x in range(0, self.imageDisplay.width()):
for y in range(0, self.imageDisplay.height()):
value = self.imageDisplay.get(x,y)
for i in value:
try:
c = int(i)
a += (i)
except:
b.append(int(a))
a = ''
b.append(int(a))
for i in range(0,3):
b[i] = (255 - b[i])
self.imageDisplay.put('#%02x%02x%02x' %tuple(b), (x,y))
b = []
a = ''
c = Canvas(self, width=700, height=700); c.pack()
c.grid(padx=0,pady=0, column=0, row=0)
c.create_image(0,0, image = self.imageDisplay, anchor = NW)
if __name__ == "__main__":
guiFrame = GUIFramework()
guiFrame.mainloop()
미리 도움을 주셔서 감사합니다. -Seth
'value'의 내용을 게시 하시겠습니까? 희망적으로 개선 할 수있는 것을 보는 데 도움이 될 것입니다. – TorelTwiddler
아, 네. PhotoImage의 get 메소드는 '255 85 0'과 같은 문자열을 반환합니다. 그 사이에 공백이있는 RGB 값입니다. 문자열을 줄 필요는 없지만 뭐든간에. –