-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
44 lines (43 loc) · 1.79 KB
/
index.js
File metadata and controls
44 lines (43 loc) · 1.79 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
module.exports = save;
var fs = require('fs');
var path = require('path');
function save(htmlText,pathToSaveImg = path.join(path.join(process.cwd(), 'images')) , baseUrl = '' ,append = true) {
var htmlWithImgUrls = htmlText.replace(/src=\"data:([^\"]+)\"/gi,function(matches){
var splitted = (matches).split(';');
var contentType = splitted[0];
var encContent = splitted[1];
var imgBase64 = encContent.substr(6);
if (encContent.substr(0,6) != 'base64') {
return matches;
}
var imgFilename = imgBase64.substr(1,8).replace(/[^\w\s]/gi, '') + Date.now() + String(Math.random() * (900000000)).replace('.',''); // Generate a unique filename
var imgExt = '';
switch(contentType.split(':')[1]) {
case 'image/jpeg': imgExt = 'jpg'; break;
case 'image/gif': imgExt = 'gif'; break;
case 'image/png': imgExt = 'png'; break;
default: return matches;
}
if (!fs.existsSync(pathToSaveImg)){
fs.mkdirSync(pathToSaveImg);
}
var imgPath = path.join(pathToSaveImg,imgFilename+'.'+imgExt);
var base64Data = encContent.replace(/^base64,/, "");
fs.writeFile(imgPath, base64Data, 'base64', function(err) {
console.log(err); // Something went wrong trying to save Image
});
if(baseUrl){
var formattedBaseUrl = (((baseUrl[baseUrl.len - 1]) == '/')? baseUrl : (baseUrl+'/'));
}
else{
var formattedBaseUrl = './';
}
if (append){
return 'src="'+formattedBaseUrl+pathToSaveImg+'/'+imgFilename+'.'+imgExt+'"';
}
if (!append){
return 'src="'+formattedBaseUrl+imgFilename+'.'+imgExt+'"';
}
});
return htmlWithImgUrls;
}