Для двух изображений, скажем, в папке img (размером 1024x768) (img1.png и img2.png), мне нужно изменить размер img2 (скажем, 300x300) и надеть img1 в x и y (скажем, 100, 200) вверху слева от img1. Конечный результат должен быть размером 1024x768.Измените размер и составьте два или более изображений, используя gm в Nodejs
Использование ГМ (https://github.com/aheckmann/gm), попытался это:
gm('./img/img1.png')
.composite('./img/img2.png')
.geometry('300x300+100+200')
.write('resultGM.png', (err) => {
if (err) console.log(err);
});
ожидаемо (из-за цепи на всей операции) она производит 300x300 изображение. Тогда я попытался это:
gm('./img/img1.png')
.composite(
gm('./img/img2.png')
.geometry('300x300+100+200')
)
.write('resultGM.png', (err) => {
if (err) console.log(err);
});
надеясь композитная функция принимает буфер, но не случайно, он не только принимает путь к файлу, и он дает ошибку. Проведя 2-3 часа и прочитав несколько сообщений (здесь можно было найти несколько дискуссий: How to do composite with gm node.js? и здесь: Combine two gm objects while resizing one of them in graphicsMagick for NodeJS (на самом деле это не отвечает на вопрос), я не смог найти решение для этой операции в памяти, используя потоки или буфер.Возможно делать это во время записи во временный файл. Есть ли там какой-нибудь орган, который мог бы найти решение для изменения размера и объединить изображения на лету?
Кстати, для компоновки изображений холст-узел действительно неплох и быстрее, чем gm или im. –
Еще не пробовал, но. Я позабочусь о том, чтобы закончить мой текущий проект. Тем не менее вам нужно установить пакеты, как я видел. Холст идеально подходит для выравнивания - позиционирования объектов. Благодарим за ваше предложение. –
да, это требует cairo и pango –