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中的Numpy入门教程
Apr 26 Python
Python的gevent框架的入门教程
Apr 29 Python
Tornado高并发处理方法实例代码
Jan 15 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
python3.4爬虫demo
Jan 22 Python
django如何自己创建一个中间件
Jul 24 Python
Django的性能优化实现解析
Jul 30 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
django正续或者倒序查库实例
May 19 Python
Pytorch中的数据集划分&正则化方法
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
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
用Python生成器实现微线程编程的教程
2015/04/13 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
PyQT实现多窗口切换
2018/04/20 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python绘制雪景图
2019/12/16 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
荟萃全球保健品:维他购
2018/05/09 全球购物
留学推荐信中文范文三篇
2014/01/25 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
如何解决php-fpm启动不了问题
2021/11/17 PHP