За последние 24 часа нас посетили 22140 программистов и 1125 роботов. Сейчас ищут 814 программистов ...

GraphicsMagick node js

Тема в разделе "JavaScript и AJAX", создана пользователем RainBowDash, 9 авг 2019.

  1. RainBowDash

    RainBowDash Активный пользователь

    С нами с:
    22 июл 2013
    Сообщения:
    220
    Симпатии:
    8
    Маловероятно , что тут кто то занимается подобной садомазой, однако.

    Есть необходимость, грубо говоря, в цикле наложить несколько изображений на другое изображение используя GM. Но как я понял это возможно сделать только сразу, не разрывая так сказать данный процесс.
    В php например я мог получить изображение в переменную и передавать её как аргумент в функцию и вызывать эту функцию в цикле. Тут же (возможно только с этим пакетом, но другой крайне сложно завести там где я хочу) ничего подобного не получается или я не понимаю как это работает. Пути все абсолютные. Все изображения на месте.

    Вот у нас есть пример работы composit (то что собственно мне сейчас и нужно) c github:
    Код (Javascript):
    1. gm('/path/to/image.jpg')
    2. .composite('/path/to/second_image.jpg')
    3. .geometry('+100+150')
    4. .write('/path/to/composite.png', function(err) {
    5.     if(!err) console.log("Written composite image.");
    6. });
    Все примеры рабочие , запускал несколько файлов из папки example и все работало. Но у них везде такая вот беда, всегда все делается в один заход. То есть все манипуляции идут подряд друг за другом. И если ты допустим попытаешься передать это все в функцию или сделать это не подряд то на выходе получишь шиш. p.s. пробывал и без использования функции.
    Код (Javascript):
    1. function drawchunk(fon_img, chunk_path, img_x, img_y){
    2.       return fon_img.composite(chunk_path).geometry('+'+ img_x +'+'+ img_y +'');
    3.      }
    Возможно конечно это все из-за того, что node js большинство действ делает асинхронно , но вроде как при чтении и записи он должен приостанавливать работу скрипта.

    Опять пытался методом научного тыка заставить это работать, вроде ничего толком и не изменил , но начал получать вот такую ошибку:
    Код (Text):
    1. Error: Command failed: gm composite: input images already specified (путь до картинки)
    Может все очевидно, хотелось бы услышать мнение на этот счет.
     
  2. RainBowDash

    RainBowDash Активный пользователь

    С нами с:
    22 июл 2013
    Сообщения:
    220
    Симпатии:
    8
    Видимо все же оно может так работать , просто он летит впереди паровоза и ещё даже не в курсе, что открыл изображение.
    Не достаточно информации по всему этому. Видимо нужно делать как то так: http://qaru.site/questions/804949/nodejs-gm-getting-image-size-synchronously , что бы все работало, но выглядит подобная конструкция конечно атас. Ну и конечно нету никаких гарантий , что взлетит...