Added exportBin method

This commit is contained in:
Chinmay Pandhare
2017-08-10 00:54:58 +05:30
parent 14b1152e5a
commit 26538891a3
5 changed files with 65 additions and 3 deletions

1
.gitignore vendored
View File

@@ -36,3 +36,4 @@ node_modules
todo.txt todo.txt
test.js test.js
output.txt output.txt
output/

View File

@@ -1,11 +1,13 @@
console.log('\x1b[31m%s\x1b[0m',"This is the output of the module"); console.log('\x1b[31m%s\x1b[0m',"This is the output of the module");
require('./src/ImageSequencer'); require('./src/ImageSequencer');
sequencer = ImageSequencer(); sequencer = ImageSequencer();
sequencer.loadImages({images:{red:'examples/red.jpg'},callback:function(){ sequencer.loadImages({images:{red:'examples/images/red.jpg'},callback:function(){
sequencer.addSteps(['do-nothing-pix','ndvi-red','invert']); sequencer.addSteps(['do-nothing-pix','ndvi-red','invert']);
sequencer.removeSteps(1); sequencer.removeSteps(1);
sequencer.insertSteps({ sequencer.insertSteps({
red: [{index: -1, name: 'do-nothing-pix', o:{}}] red: [{index: -1, name: 'do-nothing-pix', o:{}}]
}); });
sequencer.run(); sequencer.run(function(){
sequencer.exportBin();
});
}}); }});

View File

@@ -21,6 +21,7 @@
}, },
"dependencies": { "dependencies": {
"bootstrap": "~3.2.0", "bootstrap": "~3.2.0",
"data-uri-to-buffer": "^2.0.0",
"fisheyegl": "^0.1.2", "fisheyegl": "^0.1.2",
"font-awesome": "~4.5.0", "font-awesome": "~4.5.0",
"jquery": "~2", "jquery": "~2",

52
src/ExportBin.js Normal file
View File

@@ -0,0 +1,52 @@
var getDirectories = function(rootDir, cb) {
fs.readdir(rootDir, function(err, files) {
var dirs = [];
if(typeof(files)=="undefined") {
cb(dirs);
return [];
}
for (var index = 0; index < files.length; ++index) {
var file = files[index];
if (file[0] !== '.') {
var filePath = rootDir + '/' + file;
fs.stat(filePath, function(err, stat) {
if (stat.isDirectory()) {
dirs.push(this.file);
}
if (files.length === (this.index + 1)) {
return cb(dirs);
}
}.bind({index: index, file: file}));
}
}
});
}
module.exports = function ExportBin(ref) {
if(ref.options.inBrowser) return false;
fs.access('./output/', function(err){
if(err) fs.mkdir('output', function() {});
});
getDirectories('./output',function(dirs){
var num = 1;
for(var d in dirs){
if(dirs[d].match(/^sequencer(.*)$/)==null) continue;
var n = parseInt(dirs[d].match(/^sequencer(.*)$/)[1]);
num = (n>=num)?(n+1):num;
}
fs.mkdir('output/sequencer'+num,function(){
var root = 'output/sequencer'+num+'/';
for(var image in ref.images) {
var steps = ref.images[image].steps;
for(var i in steps) {
var datauri = steps[i].output.src;
var ext = steps[i].output.format;
var buffer = require('data-uri-to-buffer')(datauri);
fs.writeFile(root+image+"_"+i+"."+ext,buffer,function(){
});
}
}
})
});
}

View File

@@ -42,7 +42,8 @@ ImageSequencer = function ImageSequencer(options) {
formatInput = require('./FormatInput'), formatInput = require('./FormatInput'),
images = {}, images = {},
inputlog = [], inputlog = [],
events = require('./UserInterface')(); events = require('./UserInterface')(),
fs = require('fs');
// if in browser, prompt for an image // if in browser, prompt for an image
// if (options.imageSelect || options.inBrowser) addStep('image-select'); // if (options.imageSelect || options.inBrowser) addStep('image-select');
@@ -175,6 +176,10 @@ ImageSequencer = function ImageSequencer(options) {
this.events = require('./UserInterface')(UI); this.events = require('./UserInterface')(UI);
} }
var exportBin = function() {
return require('./ExportBin')(this);
}
return { return {
//literals and objects //literals and objects
name: "ImageSequencer", name: "ImageSequencer",
@@ -193,6 +198,7 @@ ImageSequencer = function ImageSequencer(options) {
replaceImage: replaceImage, replaceImage: replaceImage,
run: run, run: run,
setUI: setUI, setUI: setUI,
exportBin: exportBin,
//other functions //other functions
log: log, log: log,