1

我是一名艺术家,在非常早期的学习阶段尝试一些生成艺术。我有一些代码可以在第一次迭代中执行预期的操作,它会生成一个由几十个堆叠的圆圈组成的小 svg 文件,比如年轮:

import numpy as np
import svgwrite
import os

dwg = svgwrite.Drawing('svgobject',size=('620','620'), profile='full') #position One

n_circles = 3  # will generate n files
max_rad=300    # maxiumu radius, modify with interactive() later
r = 1.0        # starting radius, modify with interactive() later
c=[310,310]    # Center point of circles, modify with interactive() later

for i in range(n_circles):
#    dwg = svgwrite.Drawing('svgobject',size=('620','620'), profile='full') #position Two

    while r < max_rad:   
        step = np.around(np.random.uniform(2, 6),1) # small positive increase in radius
        r += step # increment radius
        dwg.add(dwg.circle(c, r,stroke="black", fill='none')) # append 'svgobject'
        
    n = 0
    while os.path.exists("SVG_Circles%s.svg" % n):
        n += 1
        
    dwg.saveas("SVG_Circles%s.svg" % n,pretty=True)

问题是,在任何后续迭代中,它都会做两件事之一。使用 dwg = ... 在第一个位置,我得到 3 个文件都是相同的图像,与第一次运行没有不同的随机化。在位置二,我得到第一个文件就好了,然后后面的文件是空白的。

我怀疑我需要找到一种方法来从 svgwrite.Drawing() 重新初始化类似文件的对象“svgobject”,但我已经或多或少地将它放在每个可能的位置,在每个循环中,并且情况一或二是我得到的一切。

那么如何让它以生成 svg 文件的方式进行迭代,将其写入唯一的文件名,清除我的容器/文件对象'svgobject',然后迭代 n_circle 次?

谢谢!

4

1 回答 1

1

我重写了它,这对我有用:

import numpy as np
import svgwrite
import os

def create_img(file_name):
    n_circles = 3  # will generate n files
    max_rad=300    # maxiumu radius, modify with interactive() later
    r = 1.0        # starting radius, modify with interactive() later
    c=[310,310]    # Center point of circles, modify with interactive() later

    dwg = svgwrite.Drawing(size=('620','620')) #position Two

    while r < max_rad:   
        step = np.around(np.random.uniform(2, 6),1) # small positive increase in radius
        r += step # increment radius
        dwg.add(dwg.circle(c, r,stroke="black", fill='none')) # append 'svgobject'
                
    dwg.saveas(file_name,pretty=True)


files = []

for z in range(3):
    file_name = f"SVG_Circles{z}.svg"
    create_img(file_name)
于 2021-05-15T05:42:13.920 回答