# npe_gerber ![npm (scoped)](https://img.shields.io/npm/v/@nplayfair/npe_gerber) **This is still being developed and isn't ready for production!** Only tested with gerbers generated by EAGLE. Requires node version 10 or higher. ## Usage ### Save a PNG file ``` const { ImageGenerator } = require('@nplayfair/npe_gerber'); const folderConfig = { tmpDir: path.join(__dirname, 'tmp'), imgDir: path.join(__dirname, 'img') } const imageConfig = { resizeWidth: 600, density: 1000, compLevel: 1 } const gerberArchive = '/path/to/gerber.zip'; const fileProc = new ImageGenerator(folderConfig, imageConfig); fileProc.gerberToImage(gerberArchive) .then(filename => { console.log(`Generated image ${filename}`); }) ``` ### Return a PNG stream ``` const { ImageGenerator } = require('@nplayfair/npe_gerber'); const folderConfig = { tmpDir: path.join(__dirname, 'tmp'), imgDir: path.join(__dirname, 'img') } const imageConfig = { resizeWidth: 600, density: 1000, compLevel: 1 } const gerberArchive = '/path/to/gerber.zip'; const fileProc = new ImageGenerator(folderConfig, imageConfig); fileProc.gerberToStream(gerberArchive) .then(stream => { // Do something with the stream }) ``` ## Image Processing Configuratation Several values need to be set in the image configuration object. An SVG vector is first created as an intermediate step before being converted to a PNG. These correspond to the parameters passed to [sharp](https://sharp.pixelplumbing.com/) for resizing the intermediary SVG and output PNG file. These settings are: - `resizeWidth`: Width in pixels of the output image. - `density`: DPI to create the SVG with. Low values will result in a poor quality output image. - `compLevel`: PNG compression level. More information about these settings can be found in the [sharp](https://sharp.pixelplumbing.com/) documentation.