Use pngquant (close #43); rename option formatEncoding->formatQuality

This commit is contained in:
Petr Sloup 2016-08-21 09:41:28 +02:00
parent f524f1465e
commit ee1cb21dfd
3 changed files with 14 additions and 6 deletions

View file

@ -14,6 +14,7 @@ var packageJson = require('./package');
packageJson.name += '-light';
delete packageJson.dependencies['canvas'];
delete packageJson.dependencies['mapbox-gl-native'];
delete packageJson.dependencies['node-pngquant-native'];
delete packageJson.dependencies['sharp'];
delete packageJson.devDependencies;

View file

@ -29,6 +29,7 @@
"mapbox-gl-native": "3.3.2",
"mbtiles": "0.9.0",
"morgan": "1.7.0",
"node-pngquant-native": "1.0.4",
"nomnom": "1.8.1",
"request": "2.74.0",
"sharp": "0.15.1",

View file

@ -18,6 +18,7 @@ var Canvas = require('canvas'),
mercator = new (require('sphericalmercator'))(),
mbgl = require('mapbox-gl-native'),
mbtiles = require('mbtiles'),
pngquant = require('node-pngquant-native'),
request = require('request');
var utils = require('./utils');
@ -294,21 +295,26 @@ module.exports = function(options, repo, params, id, dataResolver) {
image.toFormat(format);
var formatEncoding = (params.formatEncoding || {})[format] ||
(options.formatEncoding || {})[format];
var formatQuality = (params.formatQuality || {})[format] ||
(options.formatQuality || {})[format];
if (format == 'png') {
image.compressionLevel(formatEncoding || 6)
.withoutAdaptiveFiltering();
image.withoutAdaptiveFiltering();
} else if (format == 'jpeg') {
image.quality(formatEncoding || 80);
image.quality(formatQuality || 80);
} else if (format == 'webp') {
image.quality(formatEncoding || 90);
image.quality(formatQuality || 90);
}
image.toBuffer(function(err, buffer, info) {
if (!buffer) {
return res.status(404).send('Not found');
}
if (format == 'png') {
buffer = pngquant.compress(buffer, {
quality: [0, formatQuality || 90]
});
}
res.set({
'Last-Modified': lastModified,
'Content-Type': 'image/' + format