Firebase image-magick конвертировать не работает - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь написать текст поверх gif, а затем преобразовать его в базу 64. Но я получаю сообщение об ошибке, которое не могу устранить. Я нашел несколько примеров для inte rnet, но все они используют локальные временные файлы, не основанные на URI.

Вот что я делаю в своих функциях:

var spawnPromise = spawn(
      'convert',
      [
        `"https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2Fbanana.gif?alt=media&token=5c44b0b4-7238-40a3-8ab5-42889781bf60" null:`,
        `-fill '#000000' -font "https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2FChalkboardSE.ttf?alt=media&token=d83eadaf-9b81-4290-aa12-be6492f0243b" -pointsize 60 -annotate +270+530 '26%'`,
        `-layers composite -layers Optimize INLINE:GIF:-`,
      ],
      {capture: ['stdout', 'stderr']},
    );

Журнал ошибок который я получаю:

stderr: convert-im6.q16: unable to open image `"https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2Fbanana.gif?alt=media&token=5c44b0b4-7238-40a3-8ab5-42889781bf60" null:': No such file or directory @ error/blob.c/OpenBlob/2701.
convert-im6.q16: no decode delegate for this image format `GIF?ALT=MEDIA&TOKEN=5C44B0B4-7238-40A3-8AB5-42889781BF60" NULL:' @ error/constitute.c/ReadImage/504.
convert-im6.q16: unrecognized option `-fill '#000000' -font "https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2FChalkboardSE.ttf?alt=media&token=d83eadaf-9b81-4290-aa12-be6492f0243b" -pointsize 60 -annotate +270+530 '26%'' @ error/convert.c/ConvertImageCommand/1673.

Обновление На основании полученных отзывов я изменил код

var spawnPromise = spawn(
      'convert',
      [
        `"https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2Fbanana.gif?alt=media&token=5c44b0b4-7238-40a3-8ab5-42889781bf60"`,
        `-fill`,
        `#000000`,
        `-font`,
        `"https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2FChalkboardSE.ttf?alt=media&token=d83eadaf-9b81-4290-aa12-be6492f0243b"`,
        `-pointsize`,
        `60`,
        `-annotate`,
        `+270+530`,
        `26%`,
        `-layers`,
        `composite`,
        `-layers`,
        `optimize`,
        `INLINE:GIF:-`,
      ],
      {capture: ['stdout', 'stderr']},
    );

Но все равно получаю ниже ту же ошибку, хотя он работает нормально, когда выполняется локально.

stderr: convert-im6.q16: unable to open image `"https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2Fbanana.gif?alt=media&token=5c44b0b4-7238-40a3-8ab5-42889781bf60"': No such file or directory @ error/blob.c/OpenBlob/2701.
convert-im6.q16: no decode delegate for this image format `GIF?ALT=MEDIA&TOKEN=5C44B0B4-7238-40A3-8AB5-42889781BF60"' @ error/constitute.c/ReadImage/504.
convert-im6.q16: no images defined `INLINE:GIF:-' @ error/convert.c/ConvertImageCommand/3258.

Не могу понять, где я не прав. Эта же команда отлично работает в локальной системе при использовании ImageMagick. Я был бы признателен, если кто-нибудь может указать мне в правильном направлении. Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2020

Внимательно посмотрите на командную строку и сообщение об ошибке. Это то, что вы передаете в качестве URL:

https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-score%2Fbanana.gif?alt=media&token=5c44b0b4-7238-40a3-8ab5-42889781bf60 "null:

Обратите внимание на" null: "в конце Это вряд ли является частью вашего URL. Оказывается, я думаю, что способ передачи параметров команды также неверен. Обычно вы передаете каждый аргумент отдельно в массиве, который вы передаете spawn. Это означает, что вы, вероятно, должны отделить каждый флаг и значение каждого флага как отдельные элементы массива. Это должно быть больше похоже на то, как вы видите в документации для spawn .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...