summaryrefslogtreecommitdiffstats
path: root/lib/utils/images.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-01-28 14:53:27 +0100
committerSamy Pessé <samypesse@gmail.com>2015-01-28 14:53:27 +0100
commit12139973414b3cebce06a01fd9c6695fec648eff (patch)
treedcaa5b60d899c30c0d90131e6bb5eafd692074d7 /lib/utils/images.js
parent4e620f34ad83da735ed07da1dd804d8d1ad32b64 (diff)
downloadgitbook-12139973414b3cebce06a01fd9c6695fec648eff.zip
gitbook-12139973414b3cebce06a01fd9c6695fec648eff.tar.gz
gitbook-12139973414b3cebce06a01fd9c6695fec648eff.tar.bz2
Use svgexport instead of imagemagick
Diffstat (limited to 'lib/utils/images.js')
-rw-r--r--lib/utils/images.js51
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"]
};