Jak zrobić "gm composite -grawitacja change_image_url base_image_url" z GM Node.js?Jak zrobić composite with gm node.js?
Jak uzyskać połączenie gm().command()
& gm().in()
lub gm().out()
w celu osiągnięcia powyższego?
Jak zrobić "gm composite -grawitacja change_image_url base_image_url" z GM Node.js?Jak zrobić composite with gm node.js?
Jak uzyskać połączenie gm().command()
& gm().in()
lub gm().out()
w celu osiągnięcia powyższego?
robię to w ten sposób:
var exec = require('child_process').exec
var command = [
'-composite',
'-watermark', '20x50',
'-gravity', 'center',
'-quality', 100,
'images/watermark.png',
'images/input.jpg', //input
'images/watermarked.png' //output
];
// making watermark through exec - child_process
exec(command.join(' '), function(err, stdout, stderr) {
if (err) console.log(err);
});
jako aktywny opiekun gm, sugeruję, że robisz to w ten sposób ... ponieważ gm jest prawie niepotrzebny. jedyną różnicą jest to, że użyłbym 'execFile' zamiast' exec'. –
również, upewnij się, że polecenie zaczyna się od 'gm composite' –
w tym przykładzie, gdzie gm jest nawet używany? ... @ Jonathan mógłbyś powiedzieć więcej, gdzie użyć gm. jak to 'exec ('gm composite' + command.join ('') ..' –
Install GM, (upewnij się, że już zainstalować GraphicsMagick
npm install gm
Oto mój przykładowy kod, aby połączyć dwa zdjęcie razem (użyj gm.in
)
var gm = require('gm');
gm()
.in('-page', '+0+0')
.in('bg.jpg')
.in('-page', '+10+20') // location of smallIcon.jpg is x,y -> 10, 20
.in('smallIcon.jpg')
.mosaic()
.write('tesOutput.jpg', function (err) {
if (err) console.log(err);
});
Po wysiłku na godzinę, oto moje rozwiązanie na twoje pytanie:
gm composite -gravity center change_image_url base_image_url
gm()
.command("composite")
.in("-gravity", "center")
.in(change_image_url)
.in(base_image_url)
.write(output_file, function (err) {
if (!err)
console.log(' hooray! ');
else
console.log(err);
});
Powodzenia! Mam nadzieję, że będzie to pomocne także dla innych :)
Mając przyjemność ograniczać się do maszyny Windows na razie rozwiązałem ten problem ostatecznie, nie używając w ogóle modułu "gm". Z jakiegoś powodu, mimo że zainstalowałem magię grafiki za pośrednictwem jej instalatora, moduł węzła odmówił znalezienia go w moich zmiennych środowiskowych. Ale może to mieć coś wspólnego z faktem, że próbuję utworzyć aplikację z Electron.js (która jest podobna do Node.js, ale ma swoją "gotcha's").
var exec = require("child_process").execSync;
var commandArray = [
__dirname + "/bin/graphicsMagick/gm.exe", // the relative path to the graphics-magick executable
"-composite",
"-gravity",
"center",
__dirname + "/data/images/qr/logo-small.png", // relative paths to the images you want to composite
__dirname + "/data/images/qr/qr-webpage.png",
__dirname + "/data/images/qr/qr-webpage-logo.png" // relative path to the result
];
var returnValue = exec(commandArray.join(" "));
W przypadku okien uważam, że jest to właściwy przenośny sposób na zrobienie tego.
Dlaczego nikt nie używa komendy composite
? (https://github.com/aheckmann/gm)
var gm = require('gm');
var bgImage = 'bg.jpg',
frontImage = 'front.jpg',
resultImage = 'result.jpg',
xy = '+100+150';
gm(bgImage)
.composite(frontImage)
.geometry(xy)
.write(resultImage, function (err) {
if (!err) console.log('All done');
});
UPDATE Och, ja oglądałem historię źródło tej metody. Staje się dostępny tylko na 2014
Jeśli chcesz zmienić rozmiar i seryjnej, można użyć tego:
gm()
.in('-geometry', '+0+0')
.in('./img/img1.png')
.in('-geometry', '300x300+100+200')
.in('./img/img2.png')
.flatten()
.write('resultGM.png', function (err) {
if (err) console.log(err);
});
byłeś w stanie zorientować się, jak przejść w adresach URL, aby uzyskać kompozyt do pracy? Czytam, że można tylko przekazywać ścieżki plików. – NateW