javascript - 我尝试在 p5.js 中保存 27 张图片,但只有 10 张保存到我的下载文件夹中。为什么所有文件都没有保存?
问题描述
在我的代码中,我尝试将 27 张图片保存到我的下载文件夹中,但是当我运行代码时,它最多只能将 10 张图片保存到我的下载文件夹中。我在控制台中记录了我的结果,代码似乎运行正确。最初我认为 Chrome 或在线 p5.js Web 编辑器存在同时发送太多保存请求的问题,因此我尝试在每次保存后延迟几秒钟,但这种方法不起作用。Chrome 允许从单个站点下载多少次(可能在一定时间内)是否有限制?
我知道代码效率不高,但速度现在并不重要,因为我只是在测试一些东西,而 for 循环的结构是出于特定原因。
let t, w, img, mod, p, dim;
function preload() {
//image loaded
img = loadImage("rose.jpg");
}
function update(pos, a, b, c) {
let i = img.pixels[pos + a];
let j = img.pixels[pos + b];
let k = img.pixels[pos + c];
let l = img.pixels[pos + 3];
return [i, j, k, l];
}
function setup() {
// modified image created and its pixels loaded
image(img, 0, 0, width, height);
mod = createImage(img.width, img.height);
img.loadPixels();
mod.loadPixels();
// 3 for loops make counter for image names
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
for (let k = 0; k < 3; k++) {
//loop through the pixels of the image
for (let l = 0; l < mod.height * 4; l++) {
//m is incremented by 4 so each set of rgba values can be manipulated by the update function
for (let m = 0; m < mod.width; m += 4) {
//pixel index is calculated and update returns an array of pixel values
w = img.width * l + m;
t = update(w, i, j, k);
for (let n = 0; n < 4; n++) {
mod.pixels[w + n] = t[n];
}
}
}
//canvas is created and image is displayed
mod.updatePixels();
dim = 550;
createCanvas(dim, dim);
image(mod, 0, 0, width, height);
//save request
save(mod, ("edited" + i + j + k + ".jpg"));
}
}
}
}
解决方案
P5.js 是开源的。您可以在函数中查看下载文件的源代码p5.prototype.downloadFile
。
我没有看到关于可以下载多少文件的任何限制,所以我猜它要么来自浏览器,要么来自p5.js 用来保存文件的库。您可能想尝试其他浏览器或查看文件保存库中是否存在限制。
对于它的价值,我使用这个简化的示例进行了尝试:
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
ellipse(mouseX, mouseY, 20, 20);
// save(frameCount + ".png");
}
function mouseClicked() {
for(let i = 0; i < 100; i++) {
save(i + ".png");
}
}
如果我单击鼠标,则只保存 10 张图像。有趣的是,它们并不总是前 10 个,因此在保存调用之间似乎发生了某种竞赛。
但是,如果我取消对函数save()
内部的调用的注释draw()
,则会保存超过 10 个,但似乎大多数图像都被跳过了。
推荐阅读
- html - 溢出并包含 flex-child 的 flex-child
- java - Sikuli-Selenium Webdriver 中无法识别的元素:NoClassDefFoundError
- python - Python:文本分析
- swiftui - 在 SwiftUI 中沿路径填充颜色渐变
- c# - 如何在 C# 中创建已解析的注入依赖项列表
- flutter - 如何上传列表
到云火库? - java - 带 int 的 if 语句:Java 认为我想转换为布尔值
- bootstrap-4 - 将 Bootstrap 4 导航选项卡设置为相同的高度
- javascript - 在 reactjs 中从 URL 预渲染图像
- python - 将类对象读/写到python中的dat文件