Python 3 使用Pillow生成漂亮的分形树图片

 更新时间:2019年12月24日 11:48:13   作者:醉落红尘  
这篇文章主要介绍了Python 3 使用Pillow生成漂亮的分形树图片,本文通过实例代码介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

该程序通过绘制树干(最初是树;后来是树枝)并递归地添加树来绘制“树”。 使用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生成漂亮的分形树图片,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • virtualenv隔离Python环境的问题解析

    virtualenv隔离Python环境的问题解析

    virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题,这篇文章主要介绍了virtualenv隔离Python环境,需要的朋友可以参考下
    2022-06-06
  • Python使用textcase库轻松实现文本格式处理

    Python使用textcase库轻松实现文本格式处理

    在Python开发中,规范的文本格式处理是提升代码可读性和维护性的关键一环,本文将系统讲解textcase库的核心功能,典型应用场景及性能优化策略,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • pytorch动态神经网络(拟合)实现

    pytorch动态神经网络(拟合)实现

    这篇文章主要介绍了pytorch动态神经网络(拟合)实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详谈python在windows中的文件路径问题

    详谈python在windows中的文件路径问题

    下面小编就为大家分享一篇详谈python在windows中的文件路径问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python sorted对list和dict排序

    Python sorted对list和dict排序

    这篇文章主要介绍了Python sorted对list和dict排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Python机器学习之随机梯度下降法的实现

    Python机器学习之随机梯度下降法的实现

    如果当我们数据量和样本量非常大时,每一项都要参与到梯度下降,那么它的计算量时非常大的,所以我们需要采用随机梯度下降法。本文介绍了Python实现随机梯度下降法的方法,希望对大家有所帮助
    2023-02-02
  • windows10环境下用anaconda和VScode配置的图文教程

    windows10环境下用anaconda和VScode配置的图文教程

    这篇文章主要介绍了windows10环境下用anaconda和VScode配置的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家介绍的非常详细,需要的朋友可以参考下
    2020-03-03
  • python中tkinter复选框使用操作

    python中tkinter复选框使用操作

    Python Tkinter 复选框用来选取我们需要的选项,它前面有个小正方形的方块,如果选中则有一个对号,也可以再次点击以取消该对号来取消选中,下面通过代码介绍下python中tkinter复选框使用操作,需要的朋友参考下吧
    2021-11-11
  • Django入门优缺点及环境搭建流程

    Django入门优缺点及环境搭建流程

    这篇文章主要为大家介绍了Django入门优缺点及环境搭建流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • pandas 透视表中文字段排序方法

    pandas 透视表中文字段排序方法

    今天小编就为大家分享一篇pandas 透视表中文字段排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11

最新评论