From b52e84d1e769cc157cf8a56117dd444d579ab48d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Sun, 31 May 2015 19:25:34 +0200 Subject: [PATCH] Optimize PNG files --- lib/tools/weightChecker/imageOptimizer.js | 52 +++++++- test/core/imageOptimizerTest.js | 150 ++++++++++++++++++++++ test/fixtures/png-image.png | Bin 0 -> 56997 bytes 3 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/png-image.png diff --git a/lib/tools/weightChecker/imageOptimizer.js b/lib/tools/weightChecker/imageOptimizer.js index cf968df..542ee87 100644 --- a/lib/tools/weightChecker/imageOptimizer.js +++ b/lib/tools/weightChecker/imageOptimizer.js @@ -54,6 +54,27 @@ var ImageOptimizer = function() { return entry; }); + } else if (isPNG(entry)) { + + debug('File is a PNG'); + + // Starting softly with a lossless compression + return compressPngLosslessly(entry.weightCheck.body) + + .then(function(newFile) { + var newFileSize = newFile.contents.length; + + debug('PNG lossless compression complete for %s', entry.url); + + if (newFileSize < fileSize) { + entry.weightCheck.lossless = entry.weightCheck.optimized = newFileSize; + entry.weightCheck.isOptimized = false; + debug('Filesize is %d bytes smaller (-%d%)', fileSize - newFileSize, Math.round((fileSize - newFileSize) * 100 / fileSize)); + } + + return entry; + }); + } else { debug('File type is not an optimizable image'); deferred.resolve(entry); @@ -92,7 +113,7 @@ var ImageOptimizer = function() { var deferred = Q.defer(); var startTime = Date.now(); - debug('Starting JPEG lossly compression'); + debug('Starting JPEG lossy compression'); new Imagemin() .src(imageBody) @@ -110,11 +131,38 @@ var ImageOptimizer = function() { return deferred.promise; } + function isPNG(entry) { + return entry.isImage && entry.contentType === 'image/png'; + } + + function compressPngLosslessly(imageBody) { + var deferred = Q.defer(); + var startTime = Date.now(); + + debug('Starting PNG losslessly compression'); + + new Imagemin() + .src(imageBody) + .use(Imagemin.optipng({optimizationLevel: 2})) + .run(function (err, files) { + if (err) { + deferred.reject(err); + } else { + deferred.resolve(files[0]); + var endTime = Date.now(); + debug('compressPngLosslessly took %d ms', endTime - startTime); + } + }); + + return deferred.promise; + } + return { //recompressIfImage: recompressIfImage, optimizeImage: optimizeImage, compressJpegLosslessly: compressJpegLosslessly, - compressJpegLossly: compressJpegLossly + compressJpegLossly: compressJpegLossly, + compressPngLosslessly: compressPngLosslessly }; }; diff --git a/test/core/imageOptimizerTest.js b/test/core/imageOptimizerTest.js index d170334..ca05d40 100644 --- a/test/core/imageOptimizerTest.js +++ b/test/core/imageOptimizerTest.js @@ -76,4 +76,154 @@ describe('imageOptimizer', function() { }); }); + it('should optimize a PNG image losslessly', function(done) { + var fileContent = fs.readFileSync(path.resolve(__dirname, '../fixtures/png-image.png')); + + var fileSize = fileContent.length; + + imageOptimizer.compressPngLosslessly(fileContent).then(function(newFile) { + var newFileSize = newFile.contents.length; + newFileSize.should.be.below(fileSize); + done(); + }).fail(function(err) { + done(err); + }); + }); + + it('should optimize a png', function(done) { + var fileContent = fs.readFileSync(path.resolve(__dirname, '../fixtures/png-image.png')); + var fileSize = fileContent.length; + + var entry = { + method: 'GET', + url: 'http://localhost:8388/an-image.png', + requestHeaders: { + 'User-Agent': 'something', + Referer: 'http://www.google.fr/', + Accept: '*/*', + 'Accept-Encoding': 'gzip, deflate' + }, + status: 200, + isImage: true, + type: 'image', + contentType: 'image/png', + contentLength: 999, + weightCheck: { + body: fileContent, + totalWeight: fileSize + 200, + headersSize: 200, + bodySize: fileSize, + isCompressed: false, + uncompressedSize: fileSize + } + }; + + imageOptimizer.optimizeImage(entry) + + .then(function(newEntry) { + newEntry.weightCheck.should.have.a.property('isOptimized').that.equals(false); + newEntry.weightCheck.should.have.a.property('lossless').that.is.below(fileSize); + + done(); + }) + + .fail(function(err) { + done(err); + }); + }); + + + + + + + + + + it('shouldn\'t fail optimizing a corrupted jpeg', function(done) { + + // In this test, we try to optimize a PNG but with a falsy "image/jpeg" content type + + var fileContent = fs.readFileSync(path.resolve(__dirname, '../fixtures/png-image.png')); + var fileSize = fileContent.length; + + var entry = { + method: 'GET', + url: 'http://localhost:8388/an-image.png', + requestHeaders: { + 'User-Agent': 'something', + Referer: 'http://www.google.fr/', + Accept: '*/*', + 'Accept-Encoding': 'gzip, deflate' + }, + status: 200, + isImage: true, + type: 'image', + contentType: 'image/jpeg', + contentLength: 999, + weightCheck: { + body: fileContent, + totalWeight: fileSize + 200, + headersSize: 200, + bodySize: fileSize, + isCompressed: false, + uncompressedSize: fileSize + } + }; + + imageOptimizer.optimizeImage(entry) + + .then(function(newEntry) { + newEntry.weightCheck.should.not.have.a.property('isOptimized'); + done(); + }) + + .fail(function(err) { + done(err); + }); + }); + + it('shouldn\'t fail optimizing a corrupted png', function(done) { + + // In this test, we try to optimize a JPEG but with a falsy "image/png" content type + + var fileContent = fs.readFileSync(path.resolve(__dirname, '../fixtures/jpeg-image.jpg')); + var fileSize = fileContent.length; + + var entry = { + method: 'GET', + url: 'http://localhost:8388/an-image.jpg', + requestHeaders: { + 'User-Agent': 'something', + Referer: 'http://www.google.fr/', + Accept: '*/*', + 'Accept-Encoding': 'gzip, deflate' + }, + status: 200, + isImage: true, + type: 'image', + contentType: 'image/png', + contentLength: 999, + weightCheck: { + body: fileContent, + totalWeight: fileSize + 200, + headersSize: 200, + bodySize: fileSize, + isCompressed: false, + uncompressedSize: fileSize + } + }; + + imageOptimizer.optimizeImage(entry) + + .then(function(newEntry) { + newEntry.weightCheck.should.not.have.a.property('isOptimized'); + done(); + }) + + .fail(function(err) { + done(err); + }); + }); + }); diff --git a/test/fixtures/png-image.png b/test/fixtures/png-image.png new file mode 100644 index 0000000000000000000000000000000000000000..e1d92f7a56ba174737e86d80ffd1e629e33bbd40 GIT binary patch literal 56997 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 g&#wL7OlFwuxcAbLDu!vfY)6-=k%eKUfy