赞
踩
大风车,吱呀吱呦呦地转,
这里的风景呀真好看!天好看,地好看……
一首熟悉的歌曲,是否已经把你拉回了童年?
这首歌,估计是每个80后、90后的童年记忆!
小时候守着家里的电视,只要听到这个主题曲,就代表马上会有各种好看的动画片播出。
那么今天我们也尝试一下,通过Python用Turtle
画一个动起来的大风车,看看能否勾起我们对童年的回忆。
第一步,先观察风车的重要组成部分,四个扇叶和一个支撑杆。
其中扇叶可以通过构建一个函数,重复绘制4次获得。
以下是绘制风车扇叶的代码部分。
def draw_sector(col1,col2): turtle.color(col1,col1) turtle.circle(30,90) turtle.right(90) turtle.begin_fill() turtle.fd(120) turtle.right(90) turtle.fd(150) turtle.right(135) turtle.fd(150*(1.414)-30) turtle.end_fill() turtle.color(col2,col2) turtle.begin_fill() turtle.right(90) turtle.circle(30,90) turtle.right(90) turtle.fd(75*1.414-30) turtle.right(90) turtle.fd(150/1.414) turtle.right(135) turtle.fd(120) turtle.end_fill() turtle.right(90)
文末领取全套Python学习资源
而我们只需要循环四次,即可获得风车的最核心部分。
# 绘制四个扇形
turtle.pensize(3)
draw_sector('green','darkgreen')
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色彩表示法,小五额外在代码中添加一行:
turtle.Screen().colormode(255)
这样最核心的部分已经画完,那支撑杆就更简单了。
只需要设置合适的宽度和颜色,画一条线段即可。
turtle.pensize(50)
turtle.goto(0,32)
turtle.right(90)
turtle.color('lightgray')
turtle.fd(350)
最终呈现效果?
这样我们就画好了一个可以手持的风车,但故事才刚刚开始。
如何让大风车,吱呀吱呦地转起来
,才是今天文章的重中之重。
这里我采用的方法是:
上述这几步,都可以用python实现自动处理,那就简单多了。
首先,海龟绘图(Turtle 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,这就需要下载安装软件[1]
官网下载地址:https://www.ghostscript.com/download/gsdnld.html
安装跟自己电脑匹配的版本,然后再配置环境变量。
比如我自己是直接安装到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 动图?
我直接参考了黄同学之前的文章[2]代码来用,关键的步骤都有注释。
这样就可以用python合成图片为gif
动图了?
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)
看看效果
旋转的手持大风车 ?
池塘边的榕树上,知了在声声叫着夏天…
希望我画的这个大风车,能带给大家关于童年的回忆。
以上就是今天的全部内容分享,觉得有用的话欢迎点赞收藏哦!
学好 Python 不论是用于就业还是做副业赚钱都不错,而且学好Python还能契合未来发展趋势——人工智能、机器学习、深度学习等。
小编是一名Python开发工程师,自己整理了一套最新的Python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,这份【最新全套Python学习资料】 一定对你有用!
小编为对Python感兴趣的小伙伴准备了以下籽料 !
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑培训的!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等学习教程。带你从零基础系统性的学好Python!
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)
我已经上传至CSDN官方,如果需要可以扫描下方官方二维码免费获取【保证100%免费】
*今天的分享就到这里,喜欢且对你有所帮助的话,记得点赞关注哦~下回见 !
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。