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中的一些高级编程技巧
Apr 02 Python
Python下线程之间的共享和释放示例
May 04 Python
python黑魔法之编码转换
Jan 25 Python
python简单读取大文件的方法
Jul 01 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
python批量解压zip文件的方法
Aug 20 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
Django admin组件的使用
Oct 24 Python
python list等分并从等分的子集中随机选取一个数
Nov 16 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
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
Vue中props的详解
2019/05/16 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
python使用cookielib库示例分享
2014/03/03 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
python全栈开发语法总结
2020/11/22 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
人力资源主管职责范本
2014/03/05 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
仓管员岗位职责
2015/02/03 职场文书
迎新年主持词
2015/07/06 职场文书
2015年国培研修感言
2015/08/01 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
排查Tomcat进程假死的问题
2022/05/06 Servers
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android