Turtle 模块 - 保存图像
Posted
技术标签:
【中文标题】Turtle 模块 - 保存图像【英文标题】:Turtle module - Saving an image 【发布时间】:2011-05-03 13:35:36 【问题描述】:我想知道如何在使用 python 的海龟模块创建绘图后保存位图或矢量图形图像。经过一番谷歌搜索后,我找不到简单的答案。我确实找到了一个名为canvas2svg 的模块,但我对python 很陌生,我不知道如何安装该模块。是否有一些内置方法可以保存海龟画布的图像?如果不是,我应该在 Ubuntu 机器上将 python 的自定义模块放在哪里?
【问题讨论】:
如果您想在程序执行结束时透明地保存图像(对帮助对终止的学生作业评分有半有用的),请查看:github.com/ucsb-cs/cTurtle_screenshot 【参考方案1】:from tkinter import * # Python 3
#from Tkinter import * # Python 2
import turtle
turtle.forward(100)
ts = turtle.getscreen()
ts.getcanvas().postscript(file="duck.eps")
这将对您有所帮助;我遇到了同样的问题,我用谷歌搜索过,但通过阅读海龟模块的源代码解决了它。
canvas(tkinter)对象具有postscript功能;你可以使用它。
turtle 模块具有“getscreen”,它为您提供“turtle screen”,它为您提供海龟正在绘制的 Tiknter 画布。
这会将您保存为封装的 PostScript 格式,因此您可以肯定地在 GIMP 中使用它,但也有其他查看器。或者,您可以谷歌如何从中制作 .gif。您也可以使用免费和开源的 Inkscape 应用程序来查看 .eps 文件,然后将它们保存为矢量或位图图像文件。
【讨论】:
在python 2.7的turtle中,已经有了postscript功能。所以,你不需要单独导入 Tkinter。 我想补充一点,EPS文件保存在与脚本相同的位置。 这可行,但您不需要导入 Tkiner。但我需要从 Turtle() 的实例中获取屏幕【参考方案2】:我编写了支持 Python 标准 Turtle 接口的 svg-turtle package,并使用 svgwrite 模块编写了一个 SVG 文件。用pip install svg-turtle
安装,然后这样调用:
from svg_turtle import SvgTurtle
def draw_spiral(t):
t.fillcolor('blue')
t.begin_fill()
for i in range(20):
d = 50 + i*i*1.5
t.pencolor(0, 0.05*i, 0)
t.width(i)
t.forward(d)
t.right(144)
t.end_fill()
def write_file(draw_func, filename, width, height):
t = SvgTurtle(width, height)
draw_func(t)
t.save_as(filename)
def main():
write_file(draw_spiral, 'example.svg', 500, 500)
print('Done.')
if __name__ == '__main__':
main()
canvasvg package 是另一种选择。运行一些海龟代码后,它会将tkinter
画布上的所有项目转换为 SVG 文件。这需要tkinter
支持和显示,而 svg-turtle 不需要。
【讨论】:
我相信你应该有draw_spiral()
--> draw_spiral()
In def write_file
我猜你的意思是draw_spiral()
--> draw_func()
, @Mr.Weathers。没错,这就是我的本意,所以我已经解决了。
太棒了,问题是 _Screen 对象以这种方式失去了很多属性,因为它被 SvgTurtle 屏幕覆盖了。您可以灵活地在多个绘制通道中组合图像,例如 clear() 或获取屏幕尺寸并在您的函数中使用它...
我的新版本支持标准Turtle
、@diramazioni 的更多功能。以上是关于Turtle 模块 - 保存图像的主要内容,如果未能解决你的问题,请参考以下文章