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中实现php的var_dump函数功能
Jan 21 Python
Python实现LRU算法的2种方法
Jun 24 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
python运行时间的几种方法
Jun 17 Python
Python 自动化表单提交实例代码
Jun 08 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
python中的tcp示例详解
Dec 09 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 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实现WEB动态网页静态
2006/10/09 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python装饰器结合递归原理解析
2020/07/02 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
高中毕业自我鉴定
2013/12/13 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
如何撰写创业策划书
2019/06/27 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python