import sharp from "sharp"; import fs from "node:fs"; const maskPath = "data/media/assets/9a/9a2d060c5d49f72fda4d97c25ff4639acc850724758f43f1783218e533585b4a.mask.png"; console.log("mask exists:", fs.existsSync(maskPath)); if (fs.existsSync(maskPath)) { const m = await sharp(maskPath).metadata(); console.log("mask", m.width, m.height); // nakładka: maska jako czerwony overlay na masterze const master = "data/media/assets/9a/9a2d060c5d49f72fda4d97c25ff4639acc850724758f43f1783218e533585b4a.png"; const mw = 1200, mh = Math.round(mw*(m.height!/m.width!)); const maskRes = await sharp(maskPath).resize(mw,mh).threshold(128).toColourspace("b-w").raw().toBuffer(); const rgb = await sharp(master).resize(mw,mh).raw().toBuffer({resolveWithObject:true}); const out = Buffer.from(rgb.data); for (let i=0;i