diff --git a/package.json b/package.json index 482f56edac..1be446e056 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "daemon": "~1.1.0", "express": "^4.9.5", "express-session": "^1.8.2", - "gm": "1.17.0", + "lwip": "0.0.6", "gravatar": "^1.1.0", "heapdump": "^0.3.0", "less": "^2.0.0", diff --git a/src/image.js b/src/image.js index 0b2cea24cb..078b2d134d 100644 --- a/src/image.js +++ b/src/image.js @@ -1,41 +1,48 @@ 'use strict'; var fs = require('fs'), - gm = require('gm').subClass({imageMagick: true}); + lwip = require('lwip'), + plugins = require('./plugins'); var image = {}; image.resizeImage = function(path, extension, width, height, callback) { - function done(err, stdout, stderr) { - callback(err); - } - - if(extension === '.gif') { - gm().in(path) - .in('-coalesce') - .in('-resize') - .in(width+'x'+height+'^') - .write(path, done); + if (plugins.hasListeners('filter:image.resize')) { + plugins.fireHook('filter:image.resize', { + path: path, + extension: extension, + width: width, + height: height + }, function(err, data) { + callback(err); + }); } else { - gm(path) - .in('-resize') - .in(width+'x'+height+'^') - .gravity('Center') - .crop(width, height) - .write(path, done); + lwip.open(path, function(err, image) { + image.batch() + .cover(width, height) + .crop(width, height) + .writeFile(path, function(err) { + callback(err) + }) + }); } }; -image.convertImageToPng = function(path, extension, callback) { - if(extension !== '.png') { - gm(path).toBuffer('png', function(err, buffer) { +image.normalise = function(path, extension, callback) { + if (plugins.hasListeners('filter:image.normalise')) { + plugins.fireHook('filter:image.normalise', { + path: path, + extension: extension + }, function(err, data) { + callback(err); + }); + } else { + lwip.open(path, function(err, image) { if (err) { return callback(err); } - fs.writeFile(path, buffer, 'binary', callback); + image.writeFile(path, 'png', callback) }); - } else { - callback(); } }; diff --git a/src/plugins/load.js b/src/plugins/load.js index 57fb8be4ab..d0f94c019a 100644 --- a/src/plugins/load.js +++ b/src/plugins/load.js @@ -57,7 +57,7 @@ module.exports = function(Plugins) { function display() { process.stdout.write('\n'); winston.warn('[plugins/' + pluginData.id + '] This plugin may not be compatible with your version of NodeBB. This may cause unintended behaviour or crashing.'); - winston.warn('[plugins/' + pluginData.id + '] In the event of an unresponsive NodeBB caused by this plugin, run ./nodebb reset plugin="' + pluginData.id + '".'); + winston.warn('[plugins/' + pluginData.id + '] In the event of an unresponsive NodeBB caused by this plugin, run ./nodebb reset -p ' + pluginData.id + '.'); process.stdout.write('\n'); } diff --git a/src/user/picture.js b/src/user/picture.js index 8f030091a9..ada87589d6 100644 --- a/src/user/picture.js +++ b/src/user/picture.js @@ -41,7 +41,7 @@ module.exports = function(User) { }, function(next) { if (convertToPNG) { - image.convertImageToPng(picture.path, extension, next); + image.normalise(picture.path, extension, next); } else { next(); }