python绘图turtle简单,python的turtle图形

  python绘图turtle简单,python的turtle图形

  大风车,吱吱嘎嘎,这里的风景真美!天空很美,大地很美……有没有一首熟悉的歌把你带回了童年?本文将使用Turtle库绘制一个简单的风车,有需要的可以参考。

  00-1010序乌龟画风车,另存为jpg图片。从不同角度画图,合成gif动画。

  

目录

  吱吱嘎嘎作响的风车,

  这里的风景真美!天空是美丽的,地球是美丽的.

  有没有一首熟悉的歌把你带回了童年?

  这首歌估计是每个80后90后的童年记忆了!

  小时候,我在家看电视。只要听到这首主题曲,就意味着各种好看的动画片马上就要播出了。

  又是一年的六一儿童节。作为一个python号,你当然要想想你能用Python做什么。

  

前言

  第一步,观察风车的重要部件,四个扇叶,一个支撑杆。

  扇叶可以通过构造一个函数,反复绘制4次得到。

  下面是画风车叶片的代码部分。

  def draw_sector(col1,col2):

  turtle.color(col1,col1)

  turtle.circle(30,90)

  乌龟:对(90)

  turtle.begin_fill()

  乌龟. fd(120)

  乌龟:对(90)

  乌龟. fd(150)

  乌龟大师(下)135

  turtle.fd(150*(1.414)-30)

  turtle.end_fill()

  turtle.color(col2,col2)

  turtle.begin_fill()

  乌龟:对(90)

  turtle.circle(30,90)

  乌龟:对(90)

  turtle.fd(75*1.414-30)

  乌龟:对(90)

  海龟. fd(150/1.414)

  乌龟大师(下)135

  乌龟. fd(120)

  turtle.end_fill()

  乌龟:对(90)

  而我们只需要循环四次就可以得到风车的核心部分。

  #画四个扇形

  乌龟冥想(3)

  draw_sector(绿色,深绿色)

  draw_sector((26,188,156),(22,160,133))

  draw_sector((241,196,15),(243,156,18))

  draw_sector((231,76,60),(192,57,43))

  具体绘制过程如下图所示。

  注:为了能在turtle库使用RGB色彩表示法,小五额外在代码中添加一行:

  乌龟。屏幕()。颜色模式(255)

  这样核心部分已经画出来了,支撑杆就更简单了。

  只要设置好合适的宽度和颜色,画一条线段就可以了。

  乌龟冥想(50)

  turtle.goto(0,32)

  乌龟:对(90)

  turtle.color(浅灰色)

  乌龟. fd(350)

  最终效果:point_down:

  就这样,我们画出了一个可以用手握住的风车,但故事才刚刚开始。

  如何让风车转得吱吱响,是今天文章的重中之重。

  我在这里使用的方法是:

  用Turtle画一个不同角度旋转的风车,把Turtle画的界面保存为本地图片,把各个角度的图片组合成一个gif动画。以上步骤都可以用python自动处理,简单多了。

  

Turtle绘制大风车

  一、龟画(Turtl

  e Graphics)库是一个非常好用的矢量绘图工具。

  但想将其绘图结果保存为本地图片还需要好几步。

  

# 保存eps

  ts = turtle.getscreen()

  ts.getcanvas().postscript(file=r"结果.eps")

  上面两行代码只能将Turtle绘图保存为eps矢量格式。

  eps格式图片可以用PS打开,再手动另存为png、jpg等。但太麻烦了,学会了python肯定优先考虑python批量转换。

  通过查找,发现可以用PIL来进行图片格式转换。

  

from PIL import Image

  im = Image.open("结果.eps")

  im.save("结果.jpg", "JPEG")

  

  但是大家如果直接运行我代码的话,会有报错:OSError: Unable to locate Ghostscript on paths

  意思是没有在环境变量中找到 Ghostscript,这就需要下载安装软件

  官网下载地址

  

  安装跟自己电脑匹配的版本,然后再配置环境变量。

  比如我自己是直接安装到C盘上了,就要将C:\Program Files\gs\gs9.54.0\bin加到path上,来配置好环境变量。

  最后,再重启下IDE或命令行,就可以正常用了(因为修改path后,当前运行环境下需重启才能生效)。

  经过以上步骤的设置,我们以后就可以直接下载turtle的绘图结果了,而不再需要去截图。

  

  

绘制不同角度的图片

  绘制不同角度的图片,其实有很多办法,这里我只讲一种方案。

  

  圆周长 = 圆周率 × 半径 × 2,用字母公式就是C = 2πr。

  我的方案就是:海龟箭头先绕着半径30的圆,每次前进不同的周长,然后再正常绘图。这样,就相当于绕着这个中心不停旋转地作图。

  再搭配上前面学到的保存Turtle为保存jpg,这样就能生成360°不同角度的风车图片了。

  

for i in range(116):

   draw_windmill(i)

  批量绘制+另存为

  

  这样我们生成了大概100多张图片。

  

  

图片合成 gif 动图

  如何将图片合成 gif 动图?

  我直接参考了黄同学之前的文章[2]代码来用,关键的步骤都有注释。

  这样就可以用python合成图片为gif动图了:point_down:

  

def func(DURATION):

   # 获取当前的工作路径

   path = os.getcwd()

   # 获取当前工作路径下的文件列表

   file_list = os.listdir(path)

   # 复制文件列表到另外一个列表

   jpg_list = file_list.copy()

   # 移除结尾不是png的图片,只保留结尾都是png的图片

   for file in file_list:

   if file[-3:]!= "jpg":

   jpg_list.remove(file)

   # 将图片中的数字,升序排列

   jpg_list.sort(key=lambda x: float(x[:-4]))

   # 获取每张图片的绝对路径,并获取每张照片的RGB通道值,将7张照片的RGB通道值,保存在一个列表中

   print(jpg_list)

   frames = []

   for png in jpg_list:

   image_path = os.path.join(path, png)

   frames.append(imageio.imread(image_path))

   # 将图片保存为gif图,并设置间隔时间

   gif_path = os.path.join(path, "my_gif.gif")

   imageio.mimsave(gif_path, frames, GIF, duration=DURATION)

  设置好间隔时间,执行一下

  

func(0.008)

  看看效果

  旋转的手持大风车 :point_down:

  

  池塘边的榕树上,知了在声声叫着夏天......

  希望我画的这个大风车,能带给大家关于童年的回忆。

  以上就是基于Python+Turtle实现绘制简易的大风车的详细内容,更多关于Python Turtle大风车的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: