Fixed stack rendering

This commit is contained in:
2022-08-28 21:11:46 +02:00
parent 18aeb2417d
commit 8419e3f19b

View File

@@ -7,30 +7,35 @@ const { Character } = require('../models');
module.exports = { module.exports = {
name: "Rendering", name: "Rendering",
renderCardStack: async function(cards) { renderCardStack: async function(cards) {
cards.sort((a, b) => a.charcterId - b.charcterId);
for (let card of cards) { for (let card of cards) {
console.log(`Iterating card ${card.id}`); console.log(`Iterating card ${card.id}`);
card['render'] = await this.renderCard(card); card['render'] = await this.renderCard(card);
} }
const image = await sharp({ let image = await sharp({
create: { create: {
width: 900, width: 900,
height: 500, height: 500,
channels: 4, channels: 4,
background: { r: 255, g: 0, b: 0, alpha: 0.5 }, background: { r: 255, g: 0, b: 0, alpha: 0.5 },
animated: true animated: true
} }
}) }).composite([
.composite([
{ input: cards[0].render, gravity: 'northwest' }, { input: cards[0].render, gravity: 'northwest' },
{ input: cards[1].render, gravity: 'centre' }, { input: cards[1].render, gravity: 'centre' },
{ input: cards[2].render, gravity: 'northeast' }, { input: cards[2].render, gravity: 'northeast' },
]); ]);
let hash = crypto.createHash('md5').update("CHANGEME").digest('hex');
try {
await image.gif({effort: 1}).toFile(`./assets/image_cache/${hash}.gif`);
} catch (error) {
console.log(error);
}
await image.gif({effort: 1}).toFile(`./assets/image_cache/test.gif`); return `./assets/image_cache/${hash}.gif`;
return `./assets/image_cache/test.gif`;
}, },
renderCard: async function(card) { renderCard: async function(card) {
@@ -39,12 +44,15 @@ module.exports = {
id: card.characterId id: card.characterId
} }
}); });
card.imageIdentifier = card.userId ? character.imageIdentifier : 'card_cover.png';
if (!card.userId) {
let hash = crypto.createHash('md5').update(card.imageIdentifier).digest('hex'); return './assets/cards/card_cover.png';
}
let hash = crypto.createHash('md5').update(character.imageIdentifier).digest('hex');
//TODO: Add switch to turn off or bypass caching //TODO: Add switch to turn off or bypass caching
if (fs.existsSync(`./assets/image_cache/${hash}.gif`)) { if (fs.existsSync(`./assets/image_cache/${hash}.gif`)) {
return fs.createReadStream(`./assets/image_cache/${hash}.gif`); return `./assets/image_cache/${hash}.gif`;
} }
console.log(`Rendering card ${hash}`); console.log(`Rendering card ${hash}`);
@@ -57,7 +65,7 @@ module.exports = {
</svg> </svg>
`); `);
const cardImage = await sharp(`./assets/cards/${card.imageIdentifier}`, { animated: true, pages: -1 }); const cardImage = await sharp(`./assets/cards/${character.imageIdentifier}`, { animated: true, pages: -1 });
await cardImage.resize(300, 500); await cardImage.resize(300, 500);
await cardImage.composite([ await cardImage.composite([
{input: border, top:0, left: 0, tile: true}, {input: border, top:0, left: 0, tile: true},