mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-17 11:04:09 -08:00
58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
|
/*
|
||
|
From https://github.com/DiegoZoracKy/image-data-uri/blob/master/lib/image-data-uri.js
|
||
|
Modified with 0 dependencies
|
||
|
*/
|
||
|
let fs = require("fs");
|
||
|
|
||
|
let ImageDataURI = (() => {
|
||
|
|
||
|
function decode(dataURI) {
|
||
|
if (!/data:image\//.test(dataURI)) {
|
||
|
console.log("ImageDataURI :: Error :: It seems that it is not an Image Data URI. Couldn't match \"data:image/\"");
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
let regExMatches = dataURI.match("data:(image/.*);base64,(.*)");
|
||
|
return {
|
||
|
imageType: regExMatches[1],
|
||
|
dataBase64: regExMatches[2],
|
||
|
dataBuffer: new Buffer(regExMatches[2], "base64")
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function encode(data, mediaType) {
|
||
|
if (!data || !mediaType) {
|
||
|
console.log("ImageDataURI :: Error :: Missing some of the required params: data, mediaType ");
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
mediaType = (/\//.test(mediaType)) ? mediaType : "image/" + mediaType;
|
||
|
let dataBase64 = (Buffer.isBuffer(data)) ? data.toString("base64") : new Buffer(data).toString("base64");
|
||
|
let dataImgBase64 = "data:" + mediaType + ";base64," + dataBase64;
|
||
|
|
||
|
return dataImgBase64;
|
||
|
}
|
||
|
|
||
|
function outputFile(dataURI, filePath) {
|
||
|
filePath = filePath || "./";
|
||
|
return new Promise((resolve, reject) => {
|
||
|
let imageDecoded = decode(dataURI);
|
||
|
|
||
|
fs.writeFile(filePath, imageDecoded.dataBuffer, err => {
|
||
|
if (err) {
|
||
|
return reject("ImageDataURI :: Error :: " + JSON.stringify(err, null, 4));
|
||
|
}
|
||
|
resolve(filePath);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
decode: decode,
|
||
|
encode: encode,
|
||
|
outputFile: outputFile,
|
||
|
};
|
||
|
})();
|
||
|
|
||
|
module.exports = ImageDataURI;
|