summaryrefslogtreecommitdiffstats
path: root/lib/utils/images.js
blob: ebe9043986c5a0c76e9e24a4321c7395595e9da8 (plain)
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
var _ = require("lodash");
var Q = require("q");
var fs = require("fs");
var gm = require("gm");
var request = require("request");

var links = require("./links");

// Convert a file
var convertFile = 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();

		if (err.code == "ENOENT") {
			err = new Error("Need to install 'ImageMagick'");
		}
		d.reject(err);
	});

	return d.promise;
};

// Convert a file or url
var convert = function(source, dest, options) {
	if (links.isExternal(source)) source = request(source);

	return convertFile(source, dest, options);
};

module.exports = {
	convert: convert,
	INVALID: [".svg"]
};