Я пытаюсь использовать node-gm + Imagemagick для круговой обрезки изображения.Node-gm круговое изображение с использованием Imagemagick
В любом случае, вот моя попытка создания маски с использованием черного круга.
var original = 'app-server/photo.jpg';
var output = 'app-server/photo.png';
var maskPath = 'app-server/photo-mask.png';
gm(original)
.crop(233, 233,29,26)
.resize(80, 80)
.setFormat('png')
.write(output, function (err) {
console.log(err || 'cropped to target size');
gm(output)
.out('-size', '80x80')
.background('black')
.drawCircle(20,20, 0, 0)
.toBuffer('PNG',function (err, buffer) {
console.log(err || 'created circular black mask');
//docs say "a buffer can be passed instead of
//a filepath" but this is apparently false
//and say something unclear about using black/white colors for masking.
//I'm clearly lost
gm(output)
.mask(maskPath)
.write(output, function (err) {
console.log(err || 'applied circular black mask to image');
});
});
});
Я уверен, что это можно сделать с помощью какой-то фантазии командной строки конкатенации, но, несмотря на мое отсутствие обработки изображений доблести, я все еще хочу, чтобы сохранить код в чистоте. Я действительно ищу решение с использованием функций node-gm, желательно с меньшим количеством операций, чем моя попытка (также предпочтительно что-то, что работает, в отличие от моего).
Я также пытался цепь из вызовов функций для этой команды без успеха: https://stackoverflow.com/a/999563/1267778
Примечания Мне нужно обрезать в определенном месте (ш, ч, х, у), так что эти решения также не» т работа для меня: