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 相关文章推荐
在cmd中运行.py文件: python的操作步骤
May 12 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
python编写微信公众号首图思路详解
Dec 13 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
PyTorch实现AlexNet示例
Jan 14 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
python 如何快速复制序列
Sep 07 Python
Spy++的使用方法及下载教程
Jan 29 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 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执行速度全攻略(上)
2006/10/09 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
dpn网络的pytorch实现方式
2020/01/14 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
夜班门卫岗位职责
2013/12/09 职场文书
银行实习生的自我评价
2013/12/09 职场文书
校友会欢迎辞
2014/01/13 职场文书
会计实训报告范文
2014/11/04 职场文书
离婚协议书格式
2015/01/26 职场文书
二审代理词范文
2015/05/25 职场文书
暖春观后感
2015/06/08 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
Python借助with语句实现代码段只执行有限次
2022/03/23 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS