diff options
Diffstat (limited to 'lib/utils/images.js')
-rw-r--r-- | lib/utils/images.js | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/lib/utils/images.js b/lib/utils/images.js index ebe9043..0d37a0f 100644 --- a/lib/utils/images.js +++ b/lib/utils/images.js @@ -1,46 +1,49 @@ var _ = require("lodash"); var Q = require("q"); -var fs = require("fs"); -var gm = require("gm"); +var fs = require("./fs"); +var exec = require('child_process').exec; var request = require("request"); var links = require("./links"); -// Convert a file -var convertFile = function(source, dest, options) { +// Convert a svg file +var convertSVGFile = function(source, dest, options) { var d = Q.defer(); + options = _.defaults(options || {}, { - resize: null - }); - var img = gm(source) - .options({ - imageMagick: true }); - if (options.resize) img = img.resize(options.resize.w, options.resize.h); - - img.noProfile() - .write(dest, function(err) { - if (!err) return d.resolve(); + var command = "svgexport "+source+" "+dest; - if (err.code == "ENOENT") { - err = new Error("Need to install 'ImageMagick'"); - } - d.reject(err); - }); + var child = exec(command, function (error, stdout, stderr) { + if (error) { + if (error.code == "ENOENT") error = new Error("Need to install 'svgexport' using 'npm install svgexport -g'"); + return d.reject(error); + } + d.resolve(); + }); return d.promise; }; -// Convert a file or url -var convert = function(source, dest, options) { - if (links.isExternal(source)) source = request(source); +// Convert a svg file or url +var convertSVG = function(source, dest, options) { + if (!links.isExternal(source)) return convertSVGFile(source, dest, options); + + return fs.tmp.file({ postfix: '.svg' }) - return convertFile(source, dest, options); + // Download file + .then(function(tmpfile) { + return fs.writeStream(tmpfile, request(source)) + .thenResolve(tmpfile); + }) + .then(function(tmpfile) { + return convertSVGFile(tmpfile, dest, options); + }); }; module.exports = { - convert: convert, + convertSVG: convertSVG, INVALID: [".svg"] }; |