Re: Drawing and Displaying an Image with PIL

2009-01-28 Thread W. eWatson

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: www.speckledwithstars.net/

--
http://mail.python.org/mailman/listinfo/python-list


Re: Drawing and Displaying an Image with PIL

2009-01-28 Thread Peter Otten
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

2009-01-28 Thread Bill McClain
On 2009-01-28, W. eWatson notval...@sbcglobal.net 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

2009-01-28 Thread W. eWatson

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: www.speckledwithstars.net/

--
http://mail.python.org/mailman/listinfo/python-list


Drawing and Displaying an Image with PIL

2009-01-27 Thread W. eWatson

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: www.speckledwithstars.net/

--
http://mail.python.org/mailman/listinfo/python-list


Re: Drawing and Displaying an Image with PIL

2009-01-27 Thread r
On Jan 27, 9:15 pm, W. eWatson notval...@sbcglobal.net 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: www.speckledwithstars.net/

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


Re: Drawing and Displaying an Image with PIL

2009-01-27 Thread W. eWatson

r wrote:

On Jan 27, 9:15 pm, W. eWatson notval...@sbcglobal.net 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: www.speckledwithstars.net/


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: www.speckledwithstars.net/

--
http://mail.python.org/mailman/listinfo/python-list


Re: Drawing and Displaying an Image with PIL

2009-01-27 Thread r
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