// generate images from layers
const canvas = createCanvas(dimension.width, dimension.height);
const ctx = canvas.getContext("2d");
for (let i = 0; i < metadata.length; i++) {
console.info(`<${userId}>`, `generated image #${i}`);
ctx.clearRect(0, 0, dimension.width, dimension.height);
const data = metadata[i];
const traitImages = data.attributes.map((attr) =>
layerMap.get(attr.trait_type + attr.value),
);
for (const image of traitImages) {
ctx.drawImage(image, 0, 0, dimension.width, dimension.height);
}
archive.append(canvas.toBuffer("image/png"), { name: `images/${i}.${format}` });
// if divisible by 5 update status
if (i % 5 === 0) {
await collection.updateOne({ userId }, { $set: { status: i.toString() } });
}
}
console.info(`<${userId}>`, "generated images");
await collection.updateOne({ userId }, { $set: { status: "processed" } });
// generate images from layers
const canvas = createCanvas(dimension.width, dimension.height);
const ctx = canvas.getContext("2d");
for (let i = 0; i < metadata.length; i++) {
console.info(`<${userId}>`, `generated image #${i}`);
ctx.clearRect(0, 0, dimension.width, dimension.height);
const data = metadata[i];
const traitImages = data.attributes.map((attr) =>
layerMap.get(attr.trait_type + attr.value),
);
for (const image of traitImages) {
ctx.drawImage(image, 0, 0, dimension.width, dimension.height);
}
archive.append(canvas.toBuffer("image/png"), { name: `images/${i}.${format}` });
// if divisible by 5 update status
if (i % 5 === 0) {
await collection.updateOne({ userId }, { $set: { status: i.toString() } });
}
}
console.info(`<${userId}>`, "generated images");
await collection.updateOne({ userId }, { $set: { status: "processed" } });