2016-02-16 3 views
2

Я пытаюсь запросить изображение из API и «вставить» его поверх другого изображения. В Photoshop я вставлял изображение в новый слой, а затем сливал слои. Я могу выполнить это с помощью Graphicsmagick, используя gm composite().Композитные изображения в Graphicsmagick

gm().command("composite") 
.in("path/to/topImg.png") 
.in("path/to/bottomImg.png") 
.toBuffer('PNG', function(err, buffer) { 
    if (!err) {return buffer;} 
}); 

Однако композит принимает только пути к файлам. Итак, допустим, я хочу получить логотип от http://www.google.com. Я мог бы сохранить изображение, использовать его в приведенном выше коде и удалить его. То, что я ищу, - это способ сделать это, не сохраняя сначала изображение на диске.

ответ

1

Вы можете использовать URL непосредственно в качестве пути изображения, без загрузки и сохранения его

gm() 
    .command("composite") 
    .in("http://someurl...") 
    .in("http://someurl...") 
    .toBuffer('PNG', function(err, buffer) { 
    if (!err) {return buffer;} 
    }); 

Но GraphicsMagick использует поддержку HTTP от libxml2, который в настоящее время не поддерживает HTTPS. Поэтому, если вы хотите загружать изображения через HTTPS, вам понадобится внешняя программа.

+0

Вау, я был waaay, пытаясь переубедить это. Спасибо, манга. –

Смежные вопросы