From facf4a29fc63f381d9e812ab3fc5c0b99c9c81ce Mon Sep 17 00:00:00 2001 From: Pascal Temel Date: Tue, 7 Feb 2017 00:53:22 +0100 Subject: support thumbnails for .webm and .mp4 files --- controllers/uploadController.js | 46 +++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 15 deletions(-) (limited to 'controllers/uploadController.js') diff --git a/controllers/uploadController.js b/controllers/uploadController.js index f9abf50..1e1efe5 100644 --- a/controllers/uploadController.js +++ b/controllers/uploadController.js @@ -6,6 +6,7 @@ const db = require('knex')(config.database) const crypto = require('crypto') const fs = require('fs') const gm = require('gm') +const ffmpeg = require('fluent-ffmpeg') let uploadsController = {} @@ -246,30 +247,45 @@ uploadsController.list = function(req, res){ if(config.uploads.generateThumbnails === true){ - let extensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png'] + let extensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.webm', '.mp4'] for(let ext of extensions){ if(path.extname(file.name) === ext){ - file.thumb = basedomain + '/thumbs/' + file.name.slice(0, -4) + '.png' + file.thumb = basedomain + '/thumbs/' + file.name.slice(0, -ext.length) + '.png' - let thumbname = path.join(__dirname, '..', 'uploads', 'thumbs') + '/' + file.name.slice(0, -4) + '.png' + let thumbname = path.join(__dirname, '..', config.uploads.folder, 'thumbs') + '/' + file.name.slice(0, -ext.length) + '.png' fs.access(thumbname, function(err) { if (err && err.code === 'ENOENT') { // File doesnt exist - let size = { - width: 200, - height: 200 + if (ext === '.webm' || ext === '.mp4') { + ffmpeg('./' + config.uploads.folder + '/' + file.name) + .thumbnail({ + timestamps: [0], + filename: '%b.png', + folder: './' + config.uploads.folder + '/thumbs', + size: '200x?', + autopad: true + }) + .on('error', function(error) { + console.log('Error - ', error.message) + }) + } + else { + let size = { + width: 200, + height: 200 + } + + gm('./' + config.uploads.folder + '/' + file.name) + .resize(size.width, size.height + '>') + .gravity('Center') + .extent(size.width, size.height) + .background('transparent') + .write(thumbname, function (error) { + if (error) console.log('Error - ', error) + }) } - - gm('./' + config.uploads.folder + '/' + file.name) - .resize(size.width, size.height + '>') - .gravity('Center') - .extent(size.width, size.height) - .background('transparent') - .write(thumbname, function (error) { - if (error) console.log('Error - ', error) - }) } }) } -- cgit v1.2.3 From b008f77d360fbfa4ff1aebc0377aa49970b8a48e Mon Sep 17 00:00:00 2001 From: Pascal Temel Date: Tue, 7 Feb 2017 01:15:39 +0100 Subject: Remove unused parameter --- controllers/uploadController.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'controllers/uploadController.js') diff --git a/controllers/uploadController.js b/controllers/uploadController.js index 1e1efe5..3d41116 100644 --- a/controllers/uploadController.js +++ b/controllers/uploadController.js @@ -264,8 +264,7 @@ uploadsController.list = function(req, res){ timestamps: [0], filename: '%b.png', folder: './' + config.uploads.folder + '/thumbs', - size: '200x?', - autopad: true + size: '200x?' }) .on('error', function(error) { console.log('Error - ', error.message) @@ -304,4 +303,4 @@ uploadsController.list = function(req, res){ }) } -module.exports = uploadsController \ No newline at end of file +module.exports = uploadsController -- cgit v1.2.3