为什么位图的路径参数在 Ubuntu Server 20.04 上抛出"ArgumentException: Parameter is not valid"?



我决定让我的不和机器人在我新的Ubuntu 20.04主服务器上运行。

bot确实在服务器上运行,但是当我试图从路径创建Bitmap时,我得到以下错误:

System.ArgumentException: Parameter is not valid.
at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status)
at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm)
at Aurelia.ImageProcessor.ImageBuilder(String filename, String idolname, String group, String rarity, Int32 rar, String id, String pathDefiner) in /home/aurelia/discordBots/Aurelia/AureliaBot/Aurelia/ImageProcessor.cs:line 21

如果我在家里的Windows PC上调试它,我没有得到这个错误,它工作得很好。

我已经检查了每个参数&每个参数都应该是正确的。

Bitmap cardTemp = new Bitmap($"assets\groups\{group}\{idolname}\{filename}");
Bitmap card = new Bitmap(cardTemp, 800, 1200);
Bitmap rareFrameTemp = new Bitmap($"assets\frames\{rarity}Frame.png");

只有第一行抛出错误,文件确实存在。谢谢你!

问题是你的路径,虽然它们在Windows上工作,但不适用于基于Unix的系统,因为它们使用正斜杠-/-而不是反斜杠作为目录分隔符。

使用Path.Combine作为跨平台解决方案。

它将使用Path.DirectorySeparatorChar,它将提供一个特定于平台的字符:

var cardTempPath = Path.Combine("assets", "groups", group, idolname, filename);
var rareFrameTemp = Path.Combine("assets", "frames", $"{rarity}Frame.png");
Bitmap cardTemp = new Bitmap(cardTempPath);
Bitmap card = new Bitmap(cardTemp, 800, 1200);
Bitmap rareFrameTemp = new Bitmap(rareFrameTemp);

相关内容

  • 没有找到相关文章

最新更新