Композитные изображения в Graphicsmagick

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

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, вам понадобится внешняя программа.

Другие вопросы по тегам