我正试图在gif上写一些文本,然后将其转换为base64。但是我遇到了一些错误,我无法解决。我在互联网上发现了一些例子,但它们都使用本地临时文件,而不是基于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时,相同的命令在本地系统上完全有效。如果有人能为我指明正确的方向,我将不胜感激。谢谢
仔细查看命令行和错误消息。这是您作为URL传递的内容:
https://firebasestorage.googleapis.com/v0/b/blizquiz-d9ee2.appspot.com/o/animations%2Fthe-得分%2Banana.gif?alt=媒体&token=5c44b0b4-7238-40a3-8ab5-42889781bf60"空:
注意末尾的"null:"。这不太可能是你URL的一部分。事实证明,我认为您传递命令参数的方式也不正确。通常,在传递给spawn
的数组中分别传递每个参数。这意味着您可能应该将每个标志和每个标志的值作为单独的数组元素进行分离。它应该更像您在spawn文档中看到的那样。