Работа с графическим модулем Python: есть ли способ сохранить текущее окно как изображение? - PullRequest
2 голосов
/ 16 декабря 2011

Я работаю с модулем python graphics . Что я пытаюсь сделать, это сохранить текущее окно как изображение. В модуле есть возможность сохранить «изображение» как изображение (image.save ()). Но это не помогает, потому что просто сохраняет изображение, которое вы уже загрузили. ИЛИ если вы загрузите пустое изображение, как я делал в надежде, что рисование поверх этого изменит это, удивление, удивление: вы получите чистое сохраненное изображение. Вот мой код:

from graphics import *


w = 300
h = 300

anchorpoint=Point(150,150)
height=300
width=300

image=Image(anchorpoint, height, width) #creates a blank image in the background

win = GraphWin("Red Circle", w, h)
# circle needs center x, y coordinates and radius
center = Point(150, 150)
radius = 80
circle = Circle(center, radius)
circle.setFill('red')
circle.setWidth(2)
circle.draw(win)
point= circle.getCenter()

print point
pointx= point.getX()
pointy= point.getY()
print pointx
print pointy

findPixel=image.getPixel(150,150)
print findPixel
image.save("blank.gif")

# wait, click mouse to go on/exit
win.getMouse()
win.close()

#######that's it#####

Итак, снова моя проблема: как сохранить то, что сейчас на экране, как blank.gif Спасибо!

1 Ответ

1 голос
/ 18 декабря 2011

Объекты, которые вы рисуете, основаны на Tkinter. Я не верю, что вы на самом деле рисуете на базовом изображении, а скорее просто создаете объекты Tkinter с помощью библиотеки «graphics». Я также не верю, что вы можете сохранить Tkinter в файл "gif", хотя вы, безусловно, можете сохранить их в формате postscript, а затем преобразовать их в формат gif.

Для этого вам понадобится библиотека Python PIL.

Если все ваши объекты на самом деле являются объектами TKinter, вы можете просто сохранить объекты.

Начните с замены этой строки кода:

image.save("blank.gif")

со следующим:

# saves the current TKinter object in postscript format
win.postscript(file="image.eps", colormode='color')

# Convert from eps format to gif format using PIL
from PIL import Image as NewImage
img = NewImage.open("image.eps")
img.save("blank.gif", "gif")

Если вам нужна дополнительная информация, пожалуйста, проверьте http://www.daniweb.com/software-development/python/code/216929 - вот где я получил предложенный код.

Я уверен, что есть более элегантные решения, чем сохранение / преобразование, но, поскольку я мало что знаю о TKinter - это единственный способ, который я нашел.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...