npe_gerber/index.js
Nick Playfair c88a879121 Image processing
Use pcb-stackup to generate svg data from gerber files and then use sharp to generate a png file from the svg buffer
2021-01-26 23:39:35 +00:00

50 lines
1.1 KiB
JavaScript

const fs = require('fs');
const pcbStackup = require('pcb-stackup');
const sharp = require('sharp');
// Configuration
const resizeWidth = 600;
const density = 1000;
const compLevel = 1;
const destfile = './gerber/pcb3.png';
async function writeSVG(filepath, data) {
try {
await fs.promises.writeFile(filepath, data, { flag: 'w' });
} catch (e) {
console.error(`Error writing file: ${e.message}`);
}
}
const fileNames = [
'./gerber/default/copper_top.gbr',
'./gerber/default/drill_1_16.xln',
'./gerber/default/silkscreen_top.gbr',
'./gerber/default/soldermask_top.gbr',
'./gerber/default/solderpaste_top.gbr',
'./gerber/default/profile.gbr',
]
const layers = fileNames.map(filename => ({
filename,
gerber: fs.createReadStream(filename),
}));
pcbStackup(layers).then(stackup => {
// Create buffer from SVG string
sharp(Buffer.from(stackup.top.svg), { density: density })
.resize({ width: resizeWidth })
.png({
compressionLevel: compLevel })
.toFile(destfile)
.then((info) => {
console.log(info)
})
.catch((e) => {
console.error(e);
})
})
.catch((e) => {
console.error(e);
});