Re: Drawing and Displaying an Image with PIL
Peter Otten wrote: W. eWatson wrote: r wrote: Change this line: draw.line((0,0),(20,140), fill=128) To This: draw.line((0,0, 20,140), fill=128) And you should be good to go. Like you said, if you need to combine 2 tuples you can do: (1,2)+(3,4) Yes, that's true, but the big question is how to "see" the final image? Either one employees another module or writes the file into a folder, then displays it with a paint program? For debugging purposes you can just invoke the show() method im = Image.open(...) # modify image im.show() If you want to integrate the image into your own Tkinter program -- that is explained here: http://effbot.org/tkinterbook/photoimage.htm Following these instruction you code might become import Tkinter as tk import Image import ImageTk import ImageDraw import sys filename = sys.argv[1] im = Image.open(filename) draw = ImageDraw.Draw(im) draw.line((0, 0) + im.size, fill=128) draw.line(((0,0),(20,140)), fill=128) root = tk.Tk() pi = ImageTk.PhotoImage(im) label = tk.Label(root, image=pi) label.pack() root.mainloop() Peter My initial quest was to do it in PIL. That seems impossible, and the way out is Tkinter. I'm not yet savvy enough with Pythons graphics. I was definitely leaning towards PhotoImage as the way out. What module is show in? Repairing my (0,0), ... to (0,0)+, and. replacing arg with ImageOPen, produces a correct solution. My NM Tech pdf misses the boat on PhotoImage. I've seen your reference before, but never looked at PhotoImage. I'll bookmark it. I sure wish it was in pdf format. Thanks. -- W. eWatson (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) Obz Site: 39° 15' 7" N, 121° 2' 32" W, 2700 feet Web Page: -- http://mail.python.org/mailman/listinfo/python-list
Re: Drawing and Displaying an Image with PIL
W. eWatson wrote: > r wrote: >> Change this line: >> draw.line((0,0),(20,140), fill=128) >> >> To This: >> draw.line((0,0, 20,140), fill=128) >> >> And you should be good to go. Like you said, if you need to combine 2 >> tuples you can do: >> (1,2)+(3,4) > Yes, that's true, but the big question is how to "see" the final image? > Either one employees another module or writes the file into a folder, then > displays it with a paint program? For debugging purposes you can just invoke the show() method im = Image.open(...) # modify image im.show() If you want to integrate the image into your own Tkinter program -- that is explained here: http://effbot.org/tkinterbook/photoimage.htm Following these instruction you code might become import Tkinter as tk import Image import ImageTk import ImageDraw import sys filename = sys.argv[1] im = Image.open(filename) draw = ImageDraw.Draw(im) draw.line((0, 0) + im.size, fill=128) draw.line(((0,0),(20,140)), fill=128) root = tk.Tk() pi = ImageTk.PhotoImage(im) label = tk.Label(root, image=pi) label.pack() root.mainloop() Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: Drawing and Displaying an Image with PIL
On 2009-01-28, W. eWatson wrote: > Yes, that's true, but the big question is how to "see" the final image? > Either one employees another module or writes the file into a folder, then > displays it with a paint program? Does im.show() not work? -Bill -- Sattre Press Tales of War http://sattre-press.com/ by Lord Dunsany i...@sattre-press.com http://sattre-press.com/tow.html -- http://mail.python.org/mailman/listinfo/python-list
Re: Drawing and Displaying an Image with PIL
r wrote: Change this line: draw.line((0,0),(20,140), fill=128) To This: draw.line((0,0, 20,140), fill=128) And you should be good to go. Like you said, if you need to combine 2 tuples you can do: (1,2)+(3,4) Yes, that's true, but the big question is how to "see" the final image? Either one employees another module or writes the file into a folder, then displays it with a paint program? -- W. eWatson (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) Obz Site: 39° 15' 7" N, 121° 2' 32" W, 2700 feet Web Page: -- http://mail.python.org/mailman/listinfo/python-list
Re: Drawing and Displaying an Image with PIL
Change this line: draw.line((0,0),(20,140), fill=128) To This: draw.line((0,0, 20,140), fill=128) And you should be good to go. Like you said, if you need to combine 2 tuples you can do: (1,2)+(3,4) -- http://mail.python.org/mailman/listinfo/python-list
Re: Drawing and Displaying an Image with PIL
r wrote: On Jan 27, 9:15 pm, "W. eWatson" wrote: Here's my program: # fun and games import Image, ImageDraw im = Image.open("wagon.tif") # it exists in the same Win XP # folder as the program draw = ImageDraw.Draw(im) draw.line((0, 0) + im.size, fill=128) draw.line((0,0),(20,140), fill=128) # How show this final image on a display? root.mainloop() It has two problems. One is it crashes with: draw.line((0,0),(20,140), fill=128) TypeError: line() got multiple values for keyword argument 'fill' Secondly, it has no way to display the image drawn on. Is it possible, or do I have to pass the image off to another module's methods? -- W. eWatson (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) Obz Site: 39° 15' 7" N, 121° 2' 32" W, 2700 feet Web Page: I have not tried your code but i think you need to put your coodinates in one tuple. Here is an example from the docs Example Example: Draw a Grey Cross Over an Image import Image, ImageDraw im = Image.open("lena.pgm") draw = ImageDraw.Draw(im) draw.line((0, 0) + im.size, fill=128) draw.line((0, im.size[1], im.size[0], 0), fill=128) del draw # write to stdout im.save(sys.stdout, "PNG") Hope that helps That's pretty much the code I used. In fact, I borrowed it from the pdf. I just tried it, and it output "%PNG". I'd like to see this displayed in a window. If the fine had written properly, I could see whether it really drew the lines. It did not fail on the same draw stmts in my program. I see my problem, , instead of + between the tuples. I thought I'd seen another example where the 2-d tuples could be separated. I see a ImageFile module, but it's not for writing image files simply. -- W. eWatson (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) Obz Site: 39° 15' 7" N, 121° 2' 32" W, 2700 feet Web Page: -- http://mail.python.org/mailman/listinfo/python-list
Re: Drawing and Displaying an Image with PIL
On Jan 27, 9:15 pm, "W. eWatson" wrote: > Here's my program: > > # fun and games > import Image, ImageDraw > > im = Image.open("wagon.tif") # it exists in the same Win XP > # folder as the program > draw = ImageDraw.Draw(im) > draw.line((0, 0) + im.size, fill=128) > draw.line((0,0),(20,140), fill=128) > > # How show this final image on a display? > > root.mainloop() > > It has two problems. One is it crashes with: > draw.line((0,0),(20,140), fill=128) > TypeError: line() got multiple values for keyword argument 'fill' > > Secondly, it has no way to display the image drawn on. Is it possible, or do > I have to pass the image off to another module's methods? > > -- > W. eWatson > > (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) > Obz Site: 39° 15' 7" N, 121° 2' 32" W, 2700 feet > > Web Page: I have not tried your code but i think you need to put your coodinates in one tuple. Here is an example from the docs Example Example: Draw a Grey Cross Over an Image import Image, ImageDraw im = Image.open("lena.pgm") draw = ImageDraw.Draw(im) draw.line((0, 0) + im.size, fill=128) draw.line((0, im.size[1], im.size[0], 0), fill=128) del draw # write to stdout im.save(sys.stdout, "PNG") Hope that helps -- http://mail.python.org/mailman/listinfo/python-list