Python 3 使用Pillow生成漂亮的分形树图片


Posted in Python onDecember 24, 2019

该程序通过绘制树干(最初是树;后来是树枝)并递归地添加树来绘制“树”。 使用Pillow。

利用递归函数绘制分形树(fractal tree),分形几何学的基本思想:客观事物具有自相似的层次结构,局部与整体在形态、功能、信息、时间、空间等方面具有统计意义上的相似性,成为自相似性。自相似性是指局部是整体成比例缩小的性质。

版本:Python 3

# Adapted from http://rosettacode.org/wiki/Fractal_tree#Python
# to parameterise, and add colour.
# http://pillow.readthedocs.org/
# Author: Alan Richmond, Python3.codes, and others (Rosettacode)
import math, colorsys
from PIL import Image, ImageDraw
spread = 17     # how much branches spread apart
width, height = 1000, 800 # window size
maxd = 12     # maximum recursion depth
len = 9.0     # branch length factor
# http://pillow.readthedocs.org/en/latest/reference/Image.html
img = Image.new('RGB', (width, height))
# http://pillow.readthedocs.org/en/latest/reference/ImageDraw.html
d = ImageDraw.Draw(img)
# This function calls itself to add sub-trees
def drawTree(x1, y1, angle, depth):
 if depth > 0:
  #  compute this branch's next endpoint
  x2 = x1 + int(math.cos(math.radians(angle)) * depth * len)
  y2 = y1 + int(math.sin(math.radians(angle)) * depth * len)
  # https://docs.python.org/2/library/colorsys.html
  (r, g, b) = colorsys.hsv_to_rgb(float(depth) / maxd, 1.0, 1.0)
  R, G, B = int(255 * r), int(255 * g), int(255 * b)
  #  draw the branch
  d.line([x1, y1, x2, y2], (R, G, B), depth)
  #  and append 2 trees by recursion
  drawTree(x2, y2, angle - spread, depth - 1)
  drawTree(x2, y2, angle + spread, depth - 1)
# Start drawing!
drawTree(width / 2, height * 0.9, -90, maxd)
img.show()
img.save("www.linuxidc.com.png", "PNG")

效果图如下:

Python 3 使用Pillow生成漂亮的分形树图片

总结

以上所述是小编给大家介绍的Python 3 使用Pillow生成漂亮的分形树图片,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
把大数据数字口语化(python与js)两种实现
Feb 21 Python
详解Django中的权限和组以及消息
Jul 23 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
Python合并多个Excel数据的方法
Jul 16 Python
设置python3为默认python的方法
Oct 31 Python
python下载微信公众号相关文章
Feb 26 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
python 实现目录复制的三种小结
Dec 04 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python 创建TCP服务器的方法
Jul 28 Python
Python如何操作docker redis过程解析
Aug 10 Python
python dir函数快速掌握用法技巧
Dec 09 Python
python保存log日志,实现用log日志画图
Dec 24 #Python
Django 限制访问频率的思路详解
Dec 24 #Python
python 统计文件中的字符串数目示例
Dec 24 #Python
如何基于python操作json文件获取内容
Dec 24 #Python
解决python 读取 log日志的编码问题
Dec 24 #Python
python实现按关键字筛选日志文件
Dec 24 #Python
python 实现提取log文件中的关键句子,并进行统计分析
Dec 24 #Python
You might like
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
接收键盘指令的脚本
2006/06/26 Javascript
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
python判断无向图环是否存在的示例
2019/11/22 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
keras 权重保存和权重载入方式
2020/05/21 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
办公室文秘自我鉴定
2013/09/21 职场文书
上课看小说检讨书
2014/02/22 职场文书
市场部经理岗位职责
2014/04/10 职场文书
校园环保标语
2014/06/13 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS