85 lines
4.0 KiB
JavaScript
85 lines
4.0 KiB
JavaScript
"use strict";
|
|
|
|
var fs = require('fs');
|
|
|
|
var ImageTracer = require( __dirname + '/../imagetracer_v1.2.6' );
|
|
|
|
// This example uses https://github.com/arian/pngjs
|
|
// , but other libraries can be used to load an image file to an ImageData object.
|
|
var PNGReader = require( __dirname + '/PNGReader' );
|
|
|
|
// CLI arguments to options
|
|
var infilename = process.argv[2], outfilename = infilename+'.svg', options = {}, thisargname = '';
|
|
if(process.argv.length>3){
|
|
|
|
for(var i=3; i<process.argv.length; i+=2 ){
|
|
|
|
thisargname = process.argv[i].toLowerCase();
|
|
|
|
// Output file name
|
|
if(thisargname === 'outfilename' || thisargname === '-outfilename'){ outfilename = process.argv[i+1]; }
|
|
|
|
// Tracing
|
|
if(thisargname === 'corsenabled' || thisargname === '-corsenabled'){ options.corsenabled = (process.argv[i+1].toLowerCase() === 'true'); }
|
|
if(thisargname === 'ltres' || thisargname === '-ltres'){ options.ltres = parseFloat(process.argv[i+1]); }
|
|
if(thisargname === 'qtres' || thisargname === '-qtres'){ options.qtres = parseFloat(process.argv[i+1]); }
|
|
if(thisargname === 'pathomit' || thisargname === '-pathomit'){ options.pathomit = parseInt(process.argv[i+1]); }
|
|
if(thisargname === 'rightangleenhance' || thisargname === '-rightangleenhance'){ options.rightangleenhance = (process.argv[i+1].toLowerCase() === 'true'); }
|
|
|
|
// Color quantization
|
|
if(thisargname === 'colorsampling' || thisargname === '-colorsampling'){ options.colorsampling = parseInt(process.argv[i+1]); }
|
|
if(thisargname === 'numberofcolors' || thisargname === '-numberofcolors'){ options.numberofcolors = parseInt(process.argv[i+1]); }
|
|
if(thisargname === 'mincolorratio' || thisargname === '-mincolorratio'){ options.mincolorratio = parseFloat(process.argv[i+1]); }
|
|
if(thisargname === 'colorquantcycles' || thisargname === '-colorquantcycles'){ options.colorquantcycles = parseInt(process.argv[i+1]); }
|
|
|
|
// Layering method
|
|
if(thisargname === 'layering' || thisargname === '-layering'){ options.layering = process.argv[i+1]; }
|
|
|
|
// SVG rendering
|
|
if(thisargname === 'strokewidth' || thisargname === '-strokewidth'){ options.strokewidth = parseFloat(process.argv[i+1]); }
|
|
if(thisargname === 'linefilter' || thisargname === '-linefilter'){ options.linefilter = (process.argv[i+1].toLowerCase() === 'true'); }
|
|
if(thisargname === 'scale' || thisargname === '-scale'){ options.scale = parseFloat(process.argv[i+1]); }
|
|
if(thisargname === 'roundcoords' || thisargname === '-roundcoords'){ options.roundcoords = parseInt(process.argv[i+1]); }
|
|
if(thisargname === 'viewbox' || thisargname === '-viewbox'){ options.viewbox = (process.argv[i+1].toLowerCase() === 'true'); }
|
|
if(thisargname === 'desc' || thisargname === '-desc'){ options.desc = (process.argv[i+1].toLowerCase() === 'true'); }
|
|
if(thisargname === 'lcpr' || thisargname === '-lcpr'){ options.lcpr = parseFloat(process.argv[i+1]); }
|
|
if(thisargname === 'qcpr' || thisargname === '-qcpr'){ options.qcpr = parseFloat(process.argv[i+1]); }
|
|
|
|
// Blur
|
|
if(thisargname === 'blurradius' || thisargname === '-blurradius'){ options.blurradius = parseInt(process.argv[i+1]); }
|
|
if(thisargname === 'blurdelta' || thisargname === '-blurdelta'){ options.blurdelta = parseInt(process.argv[i+1]); }
|
|
|
|
}// End of argv loop
|
|
|
|
}// End of command line argument list length check
|
|
|
|
fs.readFile(
|
|
|
|
infilename, // Input file path
|
|
|
|
function( err, bytes ){
|
|
if(err){ console.log(err); throw err; }
|
|
|
|
var reader = new PNGReader(bytes);
|
|
|
|
reader.parse( function( err, png ){
|
|
if(err){ console.log(err); throw err; }
|
|
|
|
// creating an ImageData object
|
|
var myImageData = { width:png.width, height:png.height, data:png.pixels };
|
|
|
|
// tracing to SVG string
|
|
var svgstring = ImageTracer.imagedataToSVG( myImageData, options );
|
|
|
|
// writing to file
|
|
fs.writeFile(
|
|
outfilename, // Output file path
|
|
svgstring,
|
|
function(err){ if(err){ console.log(err); throw err; } console.log( outfilename+' was saved!' ); }
|
|
);
|
|
|
|
});// End of reader.parse()
|
|
|
|
}// End of readFile callback()
|
|
|
|
);// End of fs.readFile()
|