6

J'ai ici ce code qui crée un widget Tkinter Canvas, puis y incorpore une image.Création d'images vierges en Python (permettant une manipulation pixel par pixel)

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

Je voudrais être en mesure de créer une image vierge dans le widget Canvas, pour que je puisse faire pixel par pixel dans la manipulation de widget. Comment pourrait-on s'y prendre?

+0

Faites exactement la même chose que vous faites dans http://stackoverflow.com/questions/4847706/using-pils-imagedraw-module, à l'exception de 'Image.new' au lieu de' Image.open'. – misha

+0

Est-ce que ma réponse m'a aidé? – Paul

+0

Oui, c'est effectivement le cas. Merci pour l'aide. – rectangletangle

Répondre

12

Pour créer une nouvelle image vide (autre que l'ouverture d'une image), vous pouvez utiliser la méthode Image.new(...) à la place de votre Image.open(...). Il est décrit here.

Appelez ensuite self.i.put(...) pour effectuer une manipulation pixel par pixel. (i est l'objet PhotoImage comme dans votre exemple)

Voici quelques photos générales tkinter documentation.

+0

En fait, voici où Image.new (...) est décrit: http://www.pythonware.com/library/pil/handbook/image.htm – Nate

+0

les liens sont morts – BiAiB

Questions connexes