如何在Processing中循环生成多张图片并按顺序批量保存
Processing Java版批量生成作品解决方案
完全不需要修改你现有的绘图逻辑,只需要添加少量代码即可实现自动批量导出,全程复制粘贴就能操作。
1. 全局变量添加
在你现有代码的最顶部,所有函数之外,添加2行变量定义:
int totalGenerateNum = 100; // 你要生成的总作品数,需要多少直接改数字即可 int currentIndex = 0; // 记录当前生成到第几张的计数器
2. setup()函数修改
找到你代码里的setup()函数,在函数内部最后一行加一行noLoop();,示例如下:
void setup(){ size(1080,1080); // 这行是你原来的画布尺寸设置,不用改 // 你原来setup里的其他代码全部保留,不用动 noLoop(); // 只需要加这一行,关闭Processing默认的自动循环绘制 }
3. draw()函数修改
找到你代码里的draw()函数,你原来写的所有绘图代码完全保留,只需要在draw()的最后面添加以下代码:
// 自动保存图片,用编号命名不会重复 save("抽象作品_" + currentIndex + ".jpg"); currentIndex++; // 还没生成够总数就继续生成下一张 if(currentIndex < totalGenerateNum){ background(255); // 这里换成你自己常用的清空画布代码,比如黑底就写background(0) redraw(); // 触发draw重新运行,绘制下一张作品 }else{ exit(); // 全部生成完成后自动关闭程序,不需要可以删掉这行 }
可选调整项
- 想要随机命名避免后续排序混淆:把上面的save那行换成下面的代码,会生成带5位随机数的文件名,几乎不会重复
save("抽象作品_" + int(random(10000,99999)) + ".jpg"); - 想要看清每张的生成效果:在save代码后面加一行
delay(800);,数字800代表每张生成完停顿800毫秒,数字越大停顿越久 - 生成的所有图片会自动保存在你当前Processing项目的文件夹里,和你之前手动保存的位置完全一致。
内容的提问来源于stack exchange,提问作者mVZ
相关产品推荐
相关产品推荐

