const sharp = require('sharp'); const p = 'data/media/assets/e6/e64a43a218fa7471fb0713652d383736757a81c004ced24c920b142d265acf58.png'; const pts = { podloga_wnetrze_1: [1200, 700], podloga_wnetrze_2: [900, 900], sciana_wnetrze: [1000, 480], sciana_cien: [900, 1100], pas_przedni_tk: [1200, 1250], siedzisko_spod_tk: [700, 400], podlokietnik_tk: [1750, 850], siedzisko_prawe_tk:[2050, 1300], siedzisko_lewe_tk: [300, 500], listwa_drewno: [520, 1000], }; (async()=>{ const meta = await sharp(p).metadata(); const { data } = await sharp(p).removeAlpha().raw().toBuffer({resolveWithObject:true}); const W = meta.width; const luma = (i)=> 0.2126*data[i*3]+0.7152*data[i*3+1]+0.0722*data[i*3+2]; const R = 9; // okno 19x19 for (const [name,[x,y]] of Object.entries(pts)) { let s=0, s2=0, n=0; for (let dy=-R;dy<=R;dy++) for (let dx=-R;dx<=R;dx++) { const v = luma((y+dy)*W + (x+dx)); s+=v; s2+=v*v; n++; } const mean=s/n, std=Math.sqrt(Math.max(0, s2/n-mean*mean)); console.log(name.padEnd(20), `L=${mean.toFixed(0).padStart(4)}`, `std=${std.toFixed(1)}`); } })();