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学习笔记 下载
Feb 10 Python
Python深入学习之内存管理
Aug 31 Python
跟老齐学Python之玩转字符串(3)
Sep 14 Python
python+django快速实现文件上传
Oct 24 Python
python儿童学游戏编程知识点总结
Jun 03 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
python线程的几种创建方式详解
Aug 29 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
python 下载m3u8视频的示例代码
Nov 11 Python
Matplotlib绘制混淆矩阵的实现
May 27 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
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
python访问类中docstring注释的实现方法
2015/05/04 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
用Python写一个自动木马程序
2019/09/17 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
会计系个人求职信范文分享
2013/12/20 职场文书
法人授权委托书
2014/04/03 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
班级心理活动总结
2014/07/04 职场文书
自我查摆剖析材料
2014/10/11 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
八年级语文教学反思
2016/03/03 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书