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'; packageJson.name += '-light';
delete packageJson.dependencies['canvas']; delete packageJson.dependencies['canvas'];
delete packageJson.dependencies['mapbox-gl-native']; delete packageJson.dependencies['mapbox-gl-native'];
delete packageJson.dependencies['node-pngquant-native'];
delete packageJson.dependencies['sharp']; delete packageJson.dependencies['sharp'];
delete packageJson.devDependencies; delete packageJson.devDependencies;

View file

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

View file

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