我决定让我的不和机器人在我新的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);