在 Processing sketch 中使用 Flask 项目变量?

问题描述 投票:0回答:0

我正在创建一个小项目,结果证明它没有我想象的那么简单。

我有我的 Flask 项目 app.py,一个名为 processor.html 的 html 模板,以及一个名为 mySketch.pde 的静态文件夹中的处理草图。 Processor.html 只是指导如何渲染处理文件,效果很好,但我有一个额外的需求。我有一个十六进制代码列表,用于从我的烧瓶应用程序中的颜色图中提取的颜色。颜色图的属性基于取决于站点用户的输入,因此列表中的十六进制代码会有所不同。我想在我的 Processing 草图中使用这个颜色列表。本质上,每帧/每次调用 fill() 函数时都会使用列表中的一种颜色。它应该从索引 0 开始,并在每次重新启动之前转到下一个。

我不确定如何将 app.py 中的变量传递给 mySketch.pde。我在网上找不到太多信息,并尝试使用 ChatGPT,但我不知道它是否正确,而且它在帮助我理解它为什么这样做方面没有多大作用。我也遇到了十六进制代码的问题。由于它们被保存为字符串,我不能在处理过程中对它们进行 for 循环并将其放入 fill() 中,因为它只需要整数。我想也许可以将它们转换为 RGB?但不确定如何将多个 rgb 值保存到列表中。理想情况下,我会在 HSL 中拥有这些值。

我尝试使用处理的 unhex 方法作为 for 循环中十六进制代码字符串列表的测试。我意识到 unhex 方法与颜色无关,也无助于我的需要。我还发现了一些与此问题相关的帖子,建议使用 Long.decode("string")。似乎这种方法在 P4 中已被弃用,所以它不适合我。我尝试将该值转换为 int,但它不起作用。到目前为止,我所有的草图都只是返回一个黑屏。

这就是 chatgpt 建议我将变量传递给 .pde 草图的建议。我不完全理解它,也不能说它有效。该文件肯定在网站上呈现,但它只是一个黑色画布,这可能是因为十六进制代码的情况。但也许这仍然是错误的/不是解决它的最佳方法:

#app.py
@app.route('/')
def index():
    myStrings = ["#FF0000", "#00FF00", "#0000FF"]
    return render_template('processor.html', myStrings=myStrings)
#processor.html
<!DOCTYPE html>
<html>
<head>
    <title>Flask and Processing</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.min.js"></script>
    <script type="text/javascript">
        let myStrings = {{ myStrings|tojson }};
    </script>
    <script src="{{ url_for('static', filename='mySketch.pde') }}"></script>
</head>
<body>
    <h1>Flask and Processing</h1>
    <p>My Strings: {{ myStrings }}</p>
    <canvas id="canvas"></canvas>
</body>
</html>

然后在处理中简单地初始化它

String[] myStrings;

请帮忙!

html templates flask processing template-variables
© www.soinside.com 2019 - 2024. All rights reserved.