From b7c384f1eeb109a977fc6ecd7eb8bc3a98ae2529 Mon Sep 17 00:00:00 2001 From: Nathan Gass Date: Tue, 28 Jan 2020 14:18:01 +0100 Subject: [PATCH] FIx issue #350 Semi-transparent outlines on raw, premultiplied input --- src/serve_rendered.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 526b491..e4742a6 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -427,6 +427,22 @@ module.exports = (options, repo, params, id, publicUrl, dataResolver) => { return; } + // Fix semi-transparent outlines on raw, premultiplied input + // https://github.com/klokantech/tileserver-gl/issues/350#issuecomment-477857040 + for (var i = 0; i < data.length; i += 4) { + var alpha = data[i + 3]; + var norm = alpha / 255; + if (alpha === 0) { + data[i] = 0; + data[i + 1] = 0; + data[i + 2] = 0; + } else { + data[i] = data[i] / norm; + data[i + 1] = data[i + 1] / norm; + data[i + 2] = data[i + 2] / norm; + } + } + const image = sharp(data, { raw: { width: params.width * scale,