6

Mam tutaj ten kod, który tworzy widżet Tkinter Canvas, a następnie osadza w nim obraz.Tworzenie pustych obrazów w Pythonie (umożliwia manipulowanie pikselami po pikselach)

import Tkinter 
from PIL import ImageTk, Image 


class image_manip(Tkinter.Tk): 

    def __init__(self): 
     Tkinter.Tk.__init__(self) 

     self.configure(bg='red') 

     self.ImbImage = Tkinter.Canvas(self, highlightthickness=0, bd=0, bg='blue') 
     self.ImbImage.pack() 

     self.i = ImageTk.PhotoImage(Image.open(r'test.png')) 
     self.ImbImage.create_image(150, 100, image=self.i) 


def run(): 
    image_manip().mainloop() 
if __name__ == "__main__": 
    run() 

Chciałbym móc utworzyć pusty obraz w widgecie Canvas, dzięki czemu mógłbym manipulować piksel po pikselu w widgecie. Jak by się z tym pogodzić?

+0

Wykonuj dokładnie to samo co na http://stackoverflow.com/questions/4847706/using-pils-imagedraw-module, z wyjątkiem użycia 'Image.new' zamiast' Image.open'. – misha

+0

Czy moja odpowiedź pomogła? – Paul

+0

Tak, rzeczywiście. Dzięki za pomoc. – rectangletangle

Odpowiedz

12

Aby utworzyć nowy pusty obraz (inny niż otwierający), można użyć metody Image.new(...) zamiast swojego. Jest to opisane here.

Następnie wywołaj self.i.put(...), aby manipulować piksel po pikselu. (I jest obiektem PhotoImage, jak w twoim przykładzie)

Oto kilka ogólnych zdjęć fotograficznych tkinterów documentation.

+0

Właściwie to tutaj opisano Image.new (...): http://www.pythonware.com/library/pil/handbook/image.htm – Nate

+0

linki są martwe – BiAiB