-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpaste.js
More file actions
82 lines (73 loc) · 2.42 KB
/
paste.js
File metadata and controls
82 lines (73 loc) · 2.42 KB
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
77
78
79
80
/**
* Example for using LWIP to blend two images.
*/
var path = require('path'),
async = require('async'),
lwip = require('pajk-lwip');
fs = require('fs');
config = require("./config");
path = require("path");
var mkdirp = require('mkdirp');
let reduce = (arr, folder, done = name => console.log(name)) => {
if (arr && arr.length > 0)
return async.map(arr, open, (err, result) => async.reduce(result, 0, pasteAsync, writeFile));
else done("empty src in config");
function open(folder, callback) {
let files = getFiles('./images/' + folder);
let file = files[getRandomInt(0, files.length)];
if (file)
lwip.open(file, function (err, image) {
console.log("open: "+ file);
callback(err, image);
});
else logError(folder + " is empty");
}
function pasteAsync(image, next, callback) {
if (image != 0) {
image.paste(0, 0, next, (err, image) => callback(null, image));
}
else
callback(null, next);
}
function writeFile(err, image) {
if (!err)
{
mkdirp(path.join(__dirname + "/public/queue/" + folder), () => {
let name = new Date() + 'paste.png';
//let name = '!first.png';
image.writeFile('./public/queue/' + folder + "/" + name, function (err) {
logError(err);
done(name);
});
}
);
}
else logError(err);
}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
function getFiles(dir) {
let fileList = [];
try {
let files = fs.readdirSync(dir);
for (let i in files) {
if (!files.hasOwnProperty(i)) continue;
let name = dir + '/' + files[i];
if (!fs.statSync(name).isDirectory() && name.toLocaleLowerCase().endsWith(".png")) {
fileList.push(name);
}
}
} catch (err) {
let folder = path.join(__dirname);
console.log(err, "folder: "+ folder);
}
return fileList;
}
function logError(err) {
if (err) console.log(err);
}
};
exports.reduce = reduce;