有没有办法在Python中用乌龟调整gif形状的大小?

时间:2017-09-18 23:24:11

标签: python python-2.7 gif turtle-graphics

我正在使用乌龟制作一个小游戏,并意识到我可以使用turtle.registershape(filename)的图像文件。我知道您可以使用turtle.shapesizeturtle.resizemode("auto")调整默认形状并更改pensize,但有没有办法使用这些方法调整gif文件的大小?

import turtle

turtle.addshape("example.gif")

t = turtle.Turtle()

t.shape("example.gif")

t.resizemode("auto")
t.pensize(24)
t.stamp()

turtle.exitonclick()

我希望这样的东西能够正常工作,但乌龟会正常显示,而不会调整大小。

2 个答案:

答案 0 :(得分:3)

我查看了适用的海龟代码,我相信答案是“不,不是龟本身。”

引入tkinter,它是乌龟的基础,为我们提供了一些有限的(整体)乌龟图像扩展和缩减功能:

from tkinter import PhotoImage
from turtle import Turtle, Screen, Shape

screen = Screen()

# substitute 'subsample' for 'zoom' if you want to go smaller:
larger = PhotoImage(file="example.gif").zoom(2, 2)

screen.addshape("larger", Shape("image", larger))

tortoise = Turtle("larger")

tortoise.stamp()

tortoise.hideturtle()

screen.exitonclick()

如果你想要更多的灵活性,标准方法似乎是调整turtle / tkinter之外的图形 使用PIL模块动态调整图形大小把它递给turtle / tkinter。

答案 1 :(得分:1)

答案是否定的。我浏览了cpython库的源代码并跟踪了draw image方法调用。请参阅cpython库的_drawturtle方法,其中调用了drawImage方法,但没有pensizeshapesize等变量的信息。我同意@cdlane你将不得不使用其他库调整大小,但是如果你事先知道你需要的图像大小,你可以生成它们并在游戏开始时加载而不是在运行时调整大小。