You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu Server 20.04中Bitmap构造函数传路径为何抛出ArgumentException参数无效错误

问题原因
  1. 路径分隔符不兼容:Windows 采用反斜杠\作为路径分隔符,而 Ubuntu 等 Linux 系统采用正斜杠/。你代码中硬编码的\\分隔符在 Linux 环境下会被识别为文件名的组成部分,导致最终拼接的路径和实际文件存放路径不匹配,Bitmap 读取不到有效文件就会抛出参数无效错误。
  2. 原生依赖缺失:System.Drawing.Common 库依赖 GDI+ 组件实现图像处理能力,Linux 系统默认没有预装对应的兼容原生库 libgdiplus;此外从 .NET 6 版本开始,System.Drawing.Common 被官方标记为 Windows 专属库,跨平台运行时默认会触发异常。
解决方案
  • 修正路径拼接逻辑:放弃硬编码路径分隔符,改用 .NET 内置的跨平台路径拼接 API,修改代码如下:
// 替换原来的硬编码路径写法
Bitmap cardTemp = new Bitmap(Path.Combine("assets", "groups", group, idolname, filename));
Bitmap card = new Bitmap(cardTemp, 800, 1200);
Bitmap rareFrameTemp = new Bitmap(Path.Combine("assets", "frames", $"{rarity}Frame.png"));
  • 安装 Linux 下的 GDI+ 兼容库,在 Ubuntu 20.04 终端执行命令:
    sudo apt update && sudo apt install -y libgdiplus
  • 若你使用的是 .NET 6 及更高版本,需要在项目的 [项目名].runtimeconfig.json 文件的 configProperties 节点下添加配置,开启 Unix 环境支持:
{
  "runtimeOptions": {
    "configProperties": {
      "System.Drawing.EnableUnixSupport": true
    }
  }
}

如果是 .NET 7 及更高版本,更建议替换为原生跨平台图像处理库,无需依赖原生组件,兼容性和稳定性更好。

内容的提问来源于stack exchange,提问作者Viuツ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:15:04