-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
76 lines (67 loc) · 1.83 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const fs = require('fs');
const _ = require('lodash');
const trans = require('bitmap-transformations');
// Global Options
if (!options) {
var options = {
size: 2,
startOfPixelData: 10,
width: 18,
height: 22,
numOfColors: 46
};
}
// Returns new bitmap given a bitmap and a transformation
var createNewFile = function(ogBitmap, transformation) {
switch (transformation) {
case 'grayscale':
transformation = trans.grayscale;
break;
case 'sepia':
transformation = trans.sepia;
break;
}
var bitmapData = getBitMapData(ogBitmap);
var transformedBitmap = transformation(bitmapData);
var newFile = writeNewBitMap(ogBitmap, transformedBitmap);
return newFile;
}
// Writes file to system given a bitmap and options
var writeFile = function(file, options) {
var writeStream = fs.createWriteStream(options.fileToCreate);
writeStream.write(file);
writeStream.end();
}
// Returns raw bitmap color info
var getBitMapData = function(bitmap) {
var toReturn = [];
_.forEach(bitmap, function(data, index) {
if (index > bitmap.readUInt32LE(options.startOfPixelData) - 1) {
toReturn.push(data);
}
});
return toReturn;
};
// Return a new bitmap with a given bitmaps meta data
var writeNewBitMap = function(bitmap, bitmapToWrite) {
var newBitMap = bitmap;
_.forEach(bitmapToWrite, function(el, index) {
newBitMap[index + bitmap.readUInt32LE(options.startOfPixelData)] = el;
})
debugger;
return newBitMap;
};
// Logs bitmap meta data
var readBitMapHeader = function(bitmap) {
_.forEach(options, function(el, index) {
var toLog = bitmap.readUInt32LE(el);
console.log(index + ": " + toLog);
});
};
module.exports = {
writeNewBitMap: writeNewBitMap,
readBitMapHeader: readBitMapHeader,
getBitMapData: getBitMapData,
writeFile: writeFile,
createNewFile: createNewFile
};