Node-gm dairesel görüntü kırpması Görüntüyü dairesel olarak kırpmak için node-gm + Imagemagick'i kullanmaya çalışıyorum.Imagemagick
Her neyse, burada siyah bir daire kullanarak maske oluşturma girişimi.
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');
});
});
});
Bu bazı fantezi dize komut birleştirme yoluyla yapılabilir eminim, ama görüntü işleme yiğitliği benim eksikliği rağmen, hala temiz kod tutmak istiyorum. Düğüm-gm işlevlerini kullanarak, tercihen benim girişimin (örneğin, benimkinden farklı olarak çalışan bir şey) daha az harekatla bir çözümü arıyorum.
Ayrıca tüm zincir fonksiyonu bir başarı ile bu komutun çağrıları çalışılmıştır: Belirli bir yere kırpmak için gereken https://stackoverflow.com/a/999563/1267778
Not (W, H, x, y) bu nedenle bu çözüm de don' Benim için çalışamam: