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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
python合并文本文件示例
Feb 07 Python
python中requests模块的使用方法
Apr 08 Python
python 循环遍历字典元素的简单方法
Sep 11 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
深入理解Django的中间件middleware
Mar 14 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
python中wx模块的具体使用方法
May 15 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
Python基础之常用库常用方法整理
Apr 30 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
用PHP4访问Oracle815
2006/10/09 PHP
COM in PHP (winows only)
2006/10/09 PHP
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python读取二进制mnist实例详解
2017/05/31 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
2014世界杯球队球队口号
2014/06/05 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
就业协议书怎么填
2014/09/15 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python