У меня есть изображение, и я помещаю туда водяной знак, но я хочу, чтобы этот водяной знак имел непрозрачность около 30%.
Мой код:
let sharp = require('sharp');
let buffer = null;
await sharp(image)
.composite([{ input: './logo.png', gravity: 'center' }])
.sharpen()
.withMetadata()
.toBuffer()
.then(function(outputBuffer) {
buffer = outputBuffer;
});
return buffer;
Как я могу сказать, что логотип имеет непрозрачность около 30%?
@Asthmatic Извините, я не понял. можете передать пример кода?
что-то вроде github.com/lovell/sharp/issues/405#issuecomment-208033263, но установите режим наложения на dest-in
... но в вашем случае вам не нужен редьюсер, потому что это будет просто 2 изображения
@Asthmatic Я делаю это, и все изображения становятся черными, а водяной знак имеет непрозрачность 0%.
Шарп пока не умеет.
Альтернативный метод — использовать холст для изменения непрозрачности изображения перед композицией. https://github.com/Automattic/node-canvas/blob/master/examples/globalAlpha.js
Вам нужно изменить непрозрачность «logo.png», используя blur
, а затем скомпоновать его, как фрагмент кода выше.
Я считаю, что вам нужно будет скомпоновать другое изображение, которое имеет только альфа-канал на уровне 0,7, и использовать режим наложения «назначение».