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 ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
Python使用filetype精确判断文件类型
Jul 02 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
解析目标检测之IoU
Jun 26 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和javascript之间变量的传递实现代码
2012/12/19 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
js实现缓动动画
2020/11/25 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
化学实验员岗位职责
2013/12/28 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
关于环保的建议书
2014/05/12 职场文书
2014年民警工作总结
2014/11/25 职场文书
三行辞职书范文
2015/02/26 职场文书
感恩节寄语2015
2015/03/24 职场文书
关于开学的感想
2015/08/10 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL