python-3.x - 如何将 Turtle 画布保存为图像(.png 或 .jpg)
问题描述
我一直在使用海龟模块,并希望以它为起点来开发一个可以识别数字/字母的简单图像识别程序。我需要能够将海龟保存为我可以操纵的图像 - 重新缩放、旋转等以尝试调节图像。我已经研究了几个小时,似乎找不到任何有效的方法。我发现了如何将 Turtle 输出保存为 Tkinter 画布:
import turtle
t = turtle.Turtle()
# Draw something
canvas = t.getscreen().getcanvas() # Saves a Tkinter canvas object
这似乎工作得很好。下一步是将其保存为 .png 或 .jpg。但是,我唯一能找到的是如何将其保存为 postscript 文件:
canvas.postscript(file="turtle_img.ps") # Saves as a .ps file
从那里,我尝试使用 PIL 将 .ps 文件转换为 .png 或 .jpeg 文件。这是我的代码和我得到的错误:
from PIL import Image
turtle_img = Image.open("turtle_img.ps")
turtle_img.save("turtle_img", "png")
# Also tried: turtle_img.save("turtle_img, "jpeg")
运行 "turtle_img.save("turtle_img", "png") 行会产生:
OSError: Unable to locate Ghostscript on paths
我会喜欢以下之一:1. 一种将 .ps 转换为 .jpeg、.png 甚至位图的方法 2. 另一种保存 Tkinter 画布的方法,它更易于使用
编辑:我想澄清一下,我将使用大量这些,并希望在脚本中自动化该过程,而不是对每个图像使用命令行。
解决方案
您可以使用 Ghostscript 将 PostScript 程序渲染为位图。例如:
gs -sDEVICE=png16m -o out.png input.ps
还有其他可用的文件格式和颜色深度,例如 png256、jpeg 等。如果它是多页输入文件,则:
gs -sDEVICE=png16m -o out%d.png input.ps
推荐阅读
- c - 如何在 inotify 中获取访问时间
- r - 在向量 R 中寻找另一个模式的对应模式
- python - chromedriver 可执行文件在 PATH 中,但仍然出现错误
- kotlin - 意外的关闭解决方案
- google-sheets - 如何让此脚本仅在编辑特定列时运行?
- keras-layer - Conv1D 输入形状
- java - Java - 生成随机数并对每个值进行分类
- java - 如何从文件中读取java
- javascript - HTML、CSS、JavaScript 自动图像滑块
- amazon-web-services - 用于检查标签是否存在于 S3 存储桶中的 Sentinel 策略